【问题标题】:Error adding ListObject columns to Userform combobox List将 ListObject 列添加到用户窗体组合框列表时出错
【发布时间】:2016-12-19 15:59:10
【问题描述】:

我有一个名为 UFCustInfo 的用户表单。在工作表区域,我有一个宏来显示表单 -

Private Sub CmdShowInputForm()
    UFCustInfo.Show
End Sub

这被分配给工作表上的一个按钮(表单控件)。

在用户窗体区域,我还有一个初始化例程来填充用户窗体上的组合框 -

Private Sub UserForm_Initialize()
      Me.CBCustName.List = ActiveSheet.ListObject("CustInfo").ListColumns(1).DataBodyRange.Value
End Sub

当我单击命令按钮显示表单时,我得到 Runtime Error ‘438’: Object does not support this property or method ,并且调试突出显示“UFCustInfo.Show”行。

如果我禁用(注释)初始化行,表单将加载但(当然)组合框不会填充。

我还有代码可以添加新的、清晰的表单和关闭表单,只要我不运行初始化代码,它们都可以正常运行。我错过了什么?

【问题讨论】:

  • 什么是“CustInfo”?您的用户窗体的名称是什么?
  • UFCustInfo 是我给用户窗体起的名字。 CustInfo 是表的名称和该表所在的工作表的名称。所以我认为 ActiveSheet.ListObject("CustInfo") 指的是表。
  • 您没有提供太多支持信息。我怀疑这是您尝试用“表格”填充列表的地方,但您的“表格”是什么 - 它是范围名称引用 - 还是真正的表格对象?多少行/列?

标签: excel vba combobox userform populate


【解决方案1】:

根据您提供的有关您的列表对象的有限信息,我认为此修复程序可能对您有用。我认为ListObject 是一种类型,ListObjects(复数)是您要访问的集合。

' *Add this to top of your module to identify future syntax errors before running *'

Option Explicit

Private Sub UserForm_Initialize()
    Const COL_NUM as Integer = 1 ' Which column you want to access '

    Dim ws As Worksheet
    Dim i As Long
    Dim tbl As ListObject

    Set ws = ActiveSheet

    Set tbl = ws.ListObjects("CustInfo")

    CBCustName.Clear

    With tbl
       ' Add cell values one at a time to the Combo Box List
       For i = 1 To tbl.DataBodyRange.Rows.Count
           CBCustName.AddItem tbl.DataBodyRange.Cells(i, COL_NUM)
       Next
    End With

End Sub

【讨论】:

  • 感谢 dbmitch 抽出时间回复...我会试一试,让您知道结果如何。
  • 嗨 dbmitch。我添加了“Dim i As Long”,这很有效。我已经看到我之前尝试的构造作为填充组合框的解决方案,但我不知道为什么它在这种情况下不起作用。我需要了解有关 For/Next 循环的更多信息,特别是:For i = 1 To tbl.DataBodyRange.Rows.Count。看来我们正在将表中的行数分配给 i。然后我们将每一行(从第一列)的值添加到 CBCustName。我想我从未见过 COL_NUM。无论如何,我非常感谢您花时间提供帮助!哈!刚刚注意到您声明 COL_NUM 的位置。
  • 当然 - 我可以用更多信息更新该答案,但看起来你已经弄清楚了。如果我的答案有用,请随时为我的答案投票,如果它完成了工作,甚至将其标记为答案
  • 优秀的答案和解释。再次感谢您,现在我将根据用户选择的客户名称(地址、城市、州、邮编等)填充其他控件。
  • 谢谢 - 享受你的编码!
猜你喜欢
  • 2019-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-03-13
  • 2018-05-18
相关资源
最近更新 更多