2017-02-02 4 views
1

VB userformでワイルドカード検索型コンボボックスを作りたいと思います。 検索対象がExcelの列にあります。Filter(Array(Range))がPopulatin User_Formコンボボックスで機能しない

私は実行することができます:

Private Sub Combobox1_Populate(Optional fltr As String) 
    ComboBox1.List = Filter(Array("a", "ab", "abc", "abcd"), fltr) 
End Sub 

が、使用する際に失敗しました:

Sub Combobox1_Populate(Optional fltr As String) 
    ComboBox1.List = Filter(Array(Range("A1:A9")), fltr)** 
End Sub 

実行時エラー '13' を

種類の不一致

Filter(Array(Rangeが動作しないのはなぜですか?それを修正するのを助けてください。


これは以下の問題もありません。ただArray(Rangeない仕事フィルターとの合併

Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 
    Call Combobox1_Populate(ComboBox1.Text) 
End Sub 

Private Sub UserForm_Initialize() 
    Call Combobox1_Populate 
End Sub 
+1

'Range'は常に2次元配列を返し、' Filter'は1D 1を受け入れます。 'Application.Transpose'を使って範囲を転置します。 – Rory

+0

うん、それは仕事をする! – Jimmy

+0

ロリーさん、ありがとうございました。私はそれを知らず、いつもフィルターで辞書を使いました:/); –

答えて

0

は、以下のコードを試してみてください。

Sub Combobox1_Populate(Optional fltr As String) 

    ComboBox1.List = Filter(Application.Transpose(Range("A1:A9")), fltr) 

End Sub 

'============================================================== 

Private Sub UserForm_Initialize() 

Call Combobox1_Populate("shai") '<-- add the filter string in brackets, I've tested with "shai" 

End Sub 
+0

はい!あなたにはずっとお世話になりました。 これで、「ワイルドカード検索型のコンボボックス」が作成されました。 – Jimmy

関連する問題