Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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 在子对象或函数中将组合框作为参数传递_Excel_Vba_Function_Combobox - Fatal编程技术网

Excel 在子对象或函数中将组合框作为参数传递

Excel 在子对象或函数中将组合框作为参数传递,excel,vba,function,combobox,Excel,Vba,Function,Combobox,我在子流程中将组合框作为参数传递时遇到问题。在我使用子流程对每个组合框的内容进行排序之前,我现在尝试的是减少代码 我解释: 该表单包含N个组合框(1,2,…N),每个组合框填充一个表列的内容。例如: Set NColumn = TStaff.ListColumns("NameStaff").DataBodyRange Me.ComboBox1.List = NColumn.value SortComboBox1 Set IDColumn = TStaff.ListColumns("IDStaf

我在子流程中将组合框作为参数传递时遇到问题。在我使用子流程对每个组合框的内容进行排序之前,我现在尝试的是减少代码

我解释: 该表单包含N个组合框(1,2,…N),每个组合框填充一个表列的内容。例如:

Set NColumn = TStaff.ListColumns("NameStaff").DataBodyRange
Me.ComboBox1.List = NColumn.value
SortComboBox1

Set IDColumn = TStaff.ListColumns("IDStaff").DataBodyRange
Me.ComboBox2.List = IDColumn.value
SortComboBox2

...

SortComboBoxN
用于对每个组合框的内容进行排序的代码如下:

Private Sub SortComboBox1()
Dim i As Long
Dim j As Long
Dim sTemp As String
Dim LbList As Variant

LbList = Me.ComboBox1.List

For i = LBound(LbList, 1) To UBound(LbList, 1) - 1
    For j = i + 1 To UBound(LbList, 1)
        If LbList(i, 0) > LbList(j, 0) Then

            sTemp = LbList(i, 0)
            LbList(i, 0) = LbList(j, 0)
            LbList(j, 0) = sTemp
        End If
    Next j
Next i

Me.ComboBox1.Clear

Me.ComboBox1.List = LbList
End Sub

Private Sub SortComboBox2()
...
End sub

...

Private Sub SortComboBoxN()
...
End sub
我要寻找的是一个子流程,它接收任何组合框(或其内容)作为参数,并避免重复相同的代码来排列每个组合框

我的第一种方法是这样,但出现了“错误424”(需要对象):

模块1:

Public CBox As ComboBox
用户表单(代码)

问题出在哪里??
*如果有人有其他方法,感谢您的建议

您的问题在于如何调用子例程

SortCBox (Me.ComboBox1) ' <-- Wrong!
它将按预期通过


微软()提供了简单的解释。

@2019:感谢某人的简单方法是接受他们的答案(答案左侧的勾号)。实际上,这适用于整个堆栈交换范围。
SortCBox (Me.ComboBox1) ' <-- Wrong!
SortCBox Me.ComboBox1 ' <-- Right!