在reffering到不同工作表中的范围时,Userform_intialize上的运行时1004

时间:2016-06-15 06:34:45

标签: excel vba excel-vba userform

我很难让我的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比较新,所以我很确定在引用范围时我缺少一些非常基本的东西。

任何帮助将不胜感激!

1 个答案:

答案 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