【问题标题】:VBA error 424 object in range object范围对象中的 VBA 错误 424 对象
【发布时间】:2016-09-30 10:20:07
【问题描述】:

我在下面的代码中收到 424 错误,但我不知道出了什么问题。基本上我正在尝试使用来自不同工作簿中表中的列的数据填充组合框。我想用范围来做到这一点并尽可能地自动化,即我什至想将组合框对象作为变量传递......但我被困在这里......

感谢您的帮助!

Sub PopListBoxTbl(tbl As String)
Dim popv As Range, col As Range
Dim cmb As ComboBox
Dim wb As Workbook
Dim sheet As Worksheet
Set cmb = UserForm1.ComboBox2
Set wb = Workbooks.Open(path, False, True)
Set sheet = wb.Worksheets(tbl)
Set col = sheet.Range(tbl)
wb.Close
cmb.Clear
For Each popv In col.Cells 'here's the error line
With cmb
    .AddItem popv.Value
End With
Next popv
End Sub

【问题讨论】:

  • 错误应该出现在Set wb = Workbooks.Open(Path, False, True)这一行,因为没有设置path来打开任何文件。您在该行遇到的错误可能是由于您在从该文件读取/获取数据之前关闭了该文件。您可能需要考虑将该行移到子目录的末尾。

标签: excel combobox range vba


【解决方案1】:

关闭源工作簿后,您的 col 变量将一无所有。这就是导致您的错误的原因 - 您不能让 Range 对象引用已关闭工作簿中的范围。填充控件后关闭它,或先将数据加载到数组中。

【讨论】:

  • 谢谢大家!有效。不知道我不能让 Range 对象引用已关闭工作簿中的范围。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-09
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多