2017-10-29 5 views
2

これまでのところコンボボックスをソートしようとしています。 私がインターネットで見つけ、以下の古典的なコードを使用しています:私は、この行で、このサブを呼び出すいComboBoxをVBA Excelでソート

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 

を:

SortComboBox (Sheet1.cboSolvent) 

コンボボックス「cboSolvent」はWor​​ksheet1であり、すでにから充填されますワークシート2。 ComboBox 'cboSolvent'がすでにいっぱいだがソートされていないときはSub 'SortComboBox'を呼び出しています。

私は以下のエラーが表示されます:「オブジェクトが必要ですが、わかりません。私にとって、cboSolventはオブジェクト(ComboBoxオブジェクト)です。 さらに、Sheet1.cboSolventは、メッセージSheet1.cboSolvent = "Data"で強調表示されます。それはSheet1.cboSolvent.Text = "Data"でなければならないので、私にとっては不明なことです。

もちろん、この問題を解決する助けとなりますが、私が理解していないことを理解する助けとなります。

ありがとうございました。

答えて

3

を使用すると、その後、CALLキーワードを使用braketsとサブを呼び出す必要がある場合

SortComboBox Sheet1.cboSolvent 

(括弧なし)としてそれを呼び出すようにしてください。

Call SortComboBox(Sheet1.cbsolvent) 
+0

パーフェクト!私はこれらの2つの表記を知っていましたが、私は存在しない新しいものを作成すると思います。そんなにばかげて申し訳ありません!ありがとう。 – JLuc01

+0

それはうまくいってうれしい、あなたが学ぶ方法です、ごめんなさい必要はありません! –

関連する問題