无法设置行来源属性。 无效的属性值
我有一个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