Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如何为UserForm下拉列表设置列表对象标题行?_Excel_Vba_Userform - Fatal编程技术网

Excel 如何为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

我想从表中提取列标题,以便在userform的下拉列表中使用。列的数量可能会改变,并且表可能并不总是从第一行开始

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设置为UserFormSplitWB
Set myForm=New UserFormSplitWB
,然后
myForm.Show