2016-09-14 6 views
0

の行を検索します。ユーザーフォームには、シートからデータをロードするコンボボックスが1つあります。シートの値が変化するので、私はそれを動的に作成しました。Combobox Search、Second String、VBAでユーザーフォームを使用しているデータベースで作業している瞬間に、VBA

問題は、コンボボックスがかなり長いことです。たとえば、「燃焼エンジン」を検索する場合は、「櫛」と入力して入力全体を表示します。これまでのところ、これは完全に機能します。しかし、あなたは常に細胞価値の始まりを知る必要があります。 「エンジン」だけを入力すると一致しません。エンジンで他のエントリが開始されません。私は1列のデータしか持っていないので、例えば、入力エンジンだけで "燃焼エンジン"? これは単純な例です。データのリストには、複数の単語を含む多くのセルが含まれています。

誰かが私の問題の解決策を知っていますか?私はとても感謝しています! は、コンボボックスが「ComboBox1の」にちなんで命名されたと仮定すると、事前に ソフィー

答えて

0

をありがとう、あなたは、ユーザーフォームのコードウィンドウに次のコード

Private Sub ComboBox1_Change() 
    Dim i As Long 
    Static found As Boolean '<--| this will be used as this sub "footprint" and avoid its recursive and useless calls 

    If found Then '<-- we're here just after the text update made by the sub itself, so we must do nothing but erase our "footprint" and have this sub run at the next user combobox change 
     found = False '<--| erase our "footprint" 
     Exit Sub '<--| exit sub 
    End If 

    With Me.ComboBox1 '<--| reference userform combobox 
     If .Text = "" Then Exit Sub '<--| exit if no text has been typed in 
     For i = 0 To .ListCount - 1 '<--|loop through its list 
      If InStr(.List(i), .Text) > 0 Then '<--| if current list value contains typed in text... 
       found = True '<--| leave our "footprint" 
       .Text = .List(i) '<--| change text to the current list value. this will trigger this sub again but our "footprint" will make it exit 
       Exit For '<--| exit loop 
      End If 
     Next i 
    End With 
End Sub 
+0

@SophieUtを試して、あなたはそれを介して取得しましたか? – user3598756

+0

@SophieUt、あなたを助けようとしている人に適切なフィードバックを与えるのはいいことです – user3598756

関連する問題