将ListObject列添加到Userform组合框列表

时间:2016-08-12 15:17:37

标签: excel vba combobox userform populate

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

Private Sub CmdShowInputForm()
    UFCustInfo.Show
End Sub

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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