无法设置 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
我有一个 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