无法设置 RowSource 属性。无效 属性 值

Could not set the RowSource Property. Invalid Property Value

我有一个 excel,我在 'A' 列中填充了一些数据,我希望数据出现在我的用户表单中的列表框中。但我反复收到 运行 时间错误 380,说明 "Could not set the RowSource Property. Invalid property value" 下面是代码。

Private Sub ComboBox1_Change()

Dim wb123 As Workbook, TempFile As Workbook
Dim Tempsheet As Worksheet
Dim Last_Row As Integer


 Set wb123 = ThisWorkbook
Set TempFile = Workbooks.Open("C:\Users\inkapb\AppData\Local\Temp\EPC AutoTool\Projects\" & Me.ComboBox1.Text & "\Template.xlsm")

 Set Tempsheet = TempFile.Worksheets("Sheet2")
Last_Row = Tempsheet.Cells(Tempsheet.Rows.count, "A").End(xlUp).Row

     With ListBox1

    .ColumnCount = 1
    .ColumnWidths = "50"
    .RowSource = Tempsheet.Range("A2:A" & Last_Row).Address
End With


End Sub

这是我的 excel sheet,其中包含数据。

该代码对我有用,当您在用户窗体模块中时,按 F8 单步执行代码,这将单步执行代码的每一行。查看这些变量是否正在收集值。

如果在单步执行时没有任何值,那么 "TempFile" 可能有问题,例如错误的 sheet 或其他内容。

还要确保您的行源在列表框属性中为空。

您也可以使用列表属性代替行源,例如:

    Private Sub ComboBox1_Change()

    Dim wb123 As Workbook, TempFile As Workbook
    Dim Tempsheet As Worksheet
    Dim Last_Row As Long, rng As Range


    Set wb123 = ThisWorkbook
    Set TempFile = Workbooks.Open("C:\Users\Dave\Downloads\" & ComboBox1)

    Set Tempsheet = TempFile.Worksheets("Sheet2")

    With Tempsheet
        Last_Row = .Cells(.Rows.Count, "A").End(xlUp).Row
        Set rng = .Range("A2:A" & Last_Row)
    End With


    With ListBox1
        .ColumnCount = 1
        .ColumnWidths = "50"
        .List = rng.Value
    End With

    TempFile.Close True

End Sub

作为快速修复,您可以使用

.RowSource = Tempsheet.Range("A2:A" & Last_Row).Address

.RowSource = "=Sheet2!A2:A" & Last_Row

另一种方法是使用 For 循环遍历单元格并一次添加一个单元格。如果我想在将项目添加到我的组合框之前执行一些额外的操作,我通常使用下面的方式,例如有一个 If 语句来判断我是否要添加该单元格值。

For i = 2 to Last_Row 'Start from row 2 to Last_Row
     .AddItem Tempsheet.Cells(i,1).Value 'Add the item in the first column
Next i