将 ListObject 列添加到用户窗体组合框列表时出错

Error adding ListObject columns to Userform combobox List

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

Private Sub CmdShowInputForm()
    UFCustInfo.Show
End Sub

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

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

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

当我单击命令按钮显示表单时,出现运行时错误“438”:对象不支持此 属性 或方法,并且调试突出显示“UFCustInfo.Show”行。

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

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

根据您提供的有关列表对象的有限信息,我认为此修复可能对您有用。我认为 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