我运行代码时出现以下错误(如下所示)
Type Mismatch
为了给出一些上下文,工作表CourseSelection的行3从A到F填充。我想将A2:A6中的条目放入列表框中。但是,我想概括这个过程并使其动态化,以便在列F之后添加其他类别。因此,我需要一种自动方式,通过类似于下面的代码来完成此操作。但是,我收到错误消息,我不确定原因。
我在此代码之前将TaskList定义为Range。当我在运行代码时将鼠标悬停在xlToRight上时,我看到一个非常大的负值(-4191)
。我不确定这是否是问题的一部分。
With Worksheets(CourseSelection).Range("A3")
Set TaskList = Range(.Offset(0, 1), .End(xlToRight))
End With
frmTaskSelection.lbTasks.RowSource = TaskList
答案 0 :(得分:1)
除非您将CourseSelection定义为返回现有工作表名称的常量,否则代码将在With Worksheets(CourseSelection).Range("A3")
上失败。如果您想使用工作表名称CourseSelection,您将使用With Worksheets("CourseSelection").Range("A3")
。
鉴于您的错误消息,但您似乎已经超过了这一点,并且您的代码似乎在frmTaskSelection.lbTasks.RowSource = TaskList
上失败了。这是因为RowSource期望一个地址
如果您要将名为CourseSelection的工作表中的值从A3填充到Ax,其中x是最后使用的单元格,则此代码将适用于任何活动工作表。
请注意,除了A2:A6之外,我还不清楚你想如何使用F列的其他值。如果您可以提供进一步的指导/图片等,那么下面的代码可以适应
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