我很难让我的Userform正确初始化。我找到了问题,但似乎无法找到解决方案。
我想在启动Userform时填充三个列表框。 RowSource必须是动态的。
以下是缩写为相关部分的代码。
Private Sub UserForm_Initialize()
Dim varUserVE As Variant
Dim varUserBL As Variant
Dim varUserFL As Variant
'Find RowSource in Sheet Settings
With Settings
varUserVE = .Range("B7", Range("F80").End(xlUp)).Address
varUserBL = .Range("H7", Range("L80").End(xlUp)).Address
varUserFL = .Range("N7", Range("R80").End(xlUp)).Address
End With
'Fill lists
With lstVE
.ColumnCount = 5
.ColumnWidths = "100;100;50;85;50"
.ColumnHeads = True
.RowSource = varUserVE
End With
With lstBL
.ColumnCount = 5
.ColumnWidths = "100;100;50;85;50"
.ColumnHeads = True
.RowSource = varUserBL
End With
With lstFL
.ColumnCount = 5
.ColumnWidths = "100;100;50;85;50"
.ColumnHeads = True
.RowSource = varUserFL
End With
End Sub
"设置"是表格的代号。
当工作表"设置&#34>时,代码工作得很好。被选中。如果我选择不同的工作表并运行代码: 运行时错误' 1004':方法'范围'对象' _worksheet'失败
我尝试了几种方式来引用那张全都失败的表格。我对vba比较新,所以我很确定在引用范围时我缺少一些非常基本的东西。
任何帮助将不胜感激!
答案 0 :(得分:1)
此部分可能会导致您遇到问题。
With Settings
varUserVE = .Range("B7", Range("F80").End(xlUp)).Address
varUserBL = .Range("H7", Range("L80").End(xlUp)).Address
varUserFL = .Range("N7", Range("R80").End(xlUp)).Address
End With
你在第一部分使用了.Range,但它已经缺失了#34;。"在范围内(" F80").....
所以它与
是一回事varUserVE = .Range("B7", Activesheet.Range("F80").End(xlup)).Address
尝试添加"。"
With Settings
varUserVE = .Range("B7", .Range("F80").End(xlUp)).Address
varUserBL = .Range("H7", .Range("L80").End(xlUp)).Address
varUserFL = .Range("N7", .Range("R80").End(xlUp)).Address
End With