Excel 如何为UserForm下拉列表设置列表对象标题行?
我想从表中提取列标题,以便在userform的下拉列表中使用。列的数量可能会改变,并且表可能并不总是从第一行开始Excel 如何为UserForm下拉列表设置列表对象标题行?,excel,vba,userform,Excel,Vba,Userform,我想从表中提取列标题,以便在userform的下拉列表中使用。列的数量可能会改变,并且表可能并不总是从第一行开始 Sub DisplayUserFormSplitWb() UserFormSplitWb.Show End Sub Private Sub UserForm_Initialize() 'The following works 'Dim SplitOptions As Range 'Set SplitOptions = ActiveSheet.Range("A1", Active
Sub DisplayUserFormSplitWb()
UserFormSplitWb.Show
End Sub
Private Sub UserForm_Initialize()
'The following works
'Dim SplitOptions As Range
'Set SplitOptions = ActiveSheet.Range("A1", ActiveSheet.Range("A1").End(xlToRight))
'BELOW DOES NOT WORK
SplitOptions = ActiveSheet.ListObjects(1).HeaderRowRange
SplitWbCol.List = Application.Transpose(SplitOptions.Value)
End Sub
Private Sub BtnOK_Click()
UserFormSplitWb.Hide
Call SplitWbMaster.SplitWbToFiles
End Sub
在代码行UserFormSplitWb.Show
中,我得到以下信息:
运行时错误“424”:需要对象
尝试在行中添加“Set”
Set SplitOptions = ActiveSheet.ListObjects(1).HeaderRowRange
或直接
SplitWbCol.List = Application.Transpose(ActiveSheet.ListObjects(1).HeaderRowRange.Value)
您不需要
SplitOptions=…
上的Set
关键字吗?@SmileyFtW我刚刚在SplitOptions
之前添加了Set
,现在我得到了“运行时错误'381':无法设置列表属性。属性数组索引无效”。请明确使用列表所在的工作表。可能是ActiveSheet不是您所认为的那样。另外,您的模块顶部是否有选项Explicit
?你应该一直这样做。作为更好的编程实践,不要使用默认的用户表单实例。将变量声明为UserFormSplitWB
,New
,然后将该变量用作用户表单的实例<代码>将myForm设置为UserFormSplitWBSet myForm=New UserFormSplitWB
,然后myForm.Show