Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用工作表中的数据填充列表框_Excel_Vba - Fatal编程技术网

Excel 使用工作表中的数据填充列表框

Excel 使用工作表中的数据填充列表框,excel,vba,Excel,Vba,我当前在运行代码时遇到以下错误(如下所示) 为了提供一点上下文,工作表CourseSelection的第3行是从a填充到F的。我想把A2:A6中的条目放到一个列表框中。但是,我想概括这个过程,并使其动态化,如果在F列之后添加了其他类别,则可以包含这些类别。因此,我需要一种自动方式,通过类似于下面的代码来实现这一点。但是,我收到了错误消息,我不确定原因 在此代码之前,我将TaskList定义为一个范围。当我运行代码时将鼠标悬停在xlToRight上时,我看到一个非常大的负值(-4191)。我不确定

我当前在运行代码时遇到以下错误(如下所示)

为了提供一点上下文,工作表CourseSelection的第3行是从a填充到F的。我想把A2:A6中的条目放到一个列表框中。但是,我想概括这个过程,并使其动态化,如果在F列之后添加了其他类别,则可以包含这些类别。因此,我需要一种自动方式,通过类似于下面的代码来实现这一点。但是,我收到了错误消息,我不确定原因

在此代码之前,我将TaskList定义为一个范围。当我运行代码时将鼠标悬停在xlToRight上时,我看到一个非常大的负值
(-4191)
。我不确定这是否是问题的一部分

With Worksheets(CourseSelection).Range("A3")
    Set TaskList = Range(.Offset(0, 1), .End(xlToRight))
End With

frmTaskSelection.lbTasks.RowSource = TaskList

除非将CourseSelection定义为返回现有工作表名称的常量,否则代码将在工作表(CourseSelection).Range(“A3”)上失败。如果您想使用工作表名称CourseSelection,您可以将
与工作表(“CourseSelection”).Range(“A3”)
一起使用

尽管您似乎已通过此点,并且您的代码在
frmTaskSelection.lbTasks.RowSource=TaskList
上出现故障,但仍会显示错误消息。这是因为RowSource需要一个地址

如果您希望填充名为CourseSelection from A3 to Ax的工作表中的值,其中x是最后使用的单元格,则此代码将在任何活动工作表中使用

请注意,除了A2:A6之外,我不清楚您希望如何使用F列中的其他值。如果您可以提供进一步的指导/图片等,则可以调整以下代码以适应


它几乎起作用了。。。我这样做了:设置rng1=ws.Range(ws.Range(“A3”).Offset(0,1),ws.Range(“A3”).End(xlToRight))。。。不幸的是,它只显示A4条目,并没有显示所有条目。你知道我的代码有什么问题吗?这段代码看起来是从B3到第3行的第一个空白单元格进行选择。但是列表框采用垂直列表,因此如果您想使用水平列表,则需要对其进行转置。
With Worksheets(CourseSelection).Range("A3")
    Set TaskList = Range(.Offset(0, 1), .End(xlToRight))
End With

frmTaskSelection.lbTasks.RowSource = TaskList
Sub test()
    Dim ws As Worksheet
    Dim rng1 As Range
    Set ws = Worksheets("CourseSelection")
    Set rng1 = ws.Range(ws.[a3], ws.Cells(Rows.Count, "A").End(xlUp))
    frmTaskSelection.lbTasks.RowSource = "'" & ws.Name & "'!" & rng1.Address
    frmTaskSelection.Show
End Sub