在VBA Excel中sortingcombobox

我试图sorting一个combobox没有成功到目前为止。 我正在使用下面在Internet上find的经典代码:

Sub SortComboBox(ByRef oCB As ComboBox) Dim vItems As Variant Dim i As Long Dim j As Long Dim vTemp As Variant ' Put the items in a array vItems = oCB.List ' Sort the array For i = LBound(vItems, 1) To UBound(vItems, 1) - 1 For j = i + 1 To UBound(vItems, 1) If vItems(i, 0) > vItems(j, 0) Then vTemp = vItems(i, 0) vItems(i, 0) = vItems(j, 0) vItems(j, 0) = vTemp End If Next j Next i ' Clear the ComboBox oCB.Clear ' Add the sorted array back to the ComboBox For i = LBound(vItems, 1) To UBound(vItems, 1) oCB.AddItem vItems(i, 0) Next i End Sub 

我用这一行叫这个Sub:

 SortComboBox (Sheet1.cboSolvent) 

ComboBox'cboSolvent'在Worksheet1上,并且已经从工作表2中填充。 当ComboBox'cboSolvent'已经满了,但没有sorting时,我调用Sub'SortComboBox'。

我得到以下错误:“对象需要”,但我不明白,因为对我来说,cboSolvent是一个对象(一个ComboBox对象)。 此外,Sheet1.cboSolvent突出显示消息:Sheet1.cboSolvent =“Data”。 另一件事不清楚,因为它应该是Sheet1.cboSolvent.Text =“数据”。

任何帮助将不胜感激,当然这个问题,但也理解我不明白的事情。

谢谢。

尝试将其称为(不包括括号)

 SortComboBox Sheet1.cboSolvent 

如果你需要用brakets调用sub,那么使用CALL关键字。

 Call SortComboBox(Sheet1.cbsolvent)