无法设置行来源属性。 无效的属性值

我有一个excel,我已经在列“A”中填充了less量数据,我希望数据出现在我的用户表单中的列表框中。 但是我反复得到运行时错误380声明“无法设置行来源属性。无效的属性值”下面是代码。

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表格,其中包含的数据。

在这里输入图像说明

该代码适用于我,当您在用户窗体模块中,通过按F8代码,这将遍历代码的每一行。 看看这些variables是否是收集值。

变量

如果在逐行浏览时没有任何值,那么“TempFile”可能是错误的,例如错误的表格或其他内容。

还要确保你的Rowsource在Listbox属性中是空白的。

在这里输入图像说明

您也可以使用列表属性而不是rowsource,例如:

  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循环来遍历单元格并一次添加一个单元格。 我通常使用下面的方式,如果我想添加一个项目之前,我的combobox做一些额外的行动,例如有一个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