将 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
我有一个名为 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