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

时间:2011-10-25 04:37:42

标签: excel-vba vba excel

我运行代码时出现以下错误(如下所示)

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

1 个答案:

答案 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