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