当在不同的工作表中重写范围时,在Userform_intialize上运行1004
我很难让我的Userform正确初始化。 我find了问题,但似乎无法find解决scheme。
我想在用户窗体启动时填充三个列表框。 RowSource必须是dynamic的。
这里是缩短到相关部分的代码。
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
“设置”是表单的代号。
当select“设置”表时,代码工作得很好。 如果我select不同的工作表然后运行代码:运行时错误'1004':对象'_worksheet'的方法'范围'失败
我曾尝试过几种方法来引用那张失败的表格。 我对vba比较陌生,所以我非常确定在引用范围时我缺less一些非常基本的东西。
任何帮助将非常感激!
本节可能会导致您的问题。
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,但是它缺less“。” 在范围(“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