お世話になっております。検索ボックスを作成することになり、下記のサイトを参考にコードを書いています。
https://ukkari-ukachan.com/page-67
イメージしているものとしては下記の図のような仕様にしたいと考えています。
リストボックスにはあらかじめ設定したワークシートの中のリストの値を反映させることは出来たのですが、
(1)あいまい検索のテキストボックスを入力して(この場合、「田」と検索したら中田、田中というあいまい検索の候補が出てくるはずがリストボックスが動作せず、候補が出てこない)
(2)試しに(1)の状態のテキストボックスに入力して(例え動作しなくとも)リストボックスの値を選択してもテキストボックスに値が反映されません。
特にエラー表示は出ていないのですが、備えたい機能が機能していない状態です。
VBAのLBound等の動的配列が関連しているかと思うのですが、VBA初心者で且つこの数日間の間にマクロファイルを用意しなければいけないの焦りを感じております。
もしも、このコードが動作しない原因やよりシンプルなリストボックスのあいまい検索のコードがありましたらご教示のほどをお願い致します。
vba
1Private Sub txtSchBox_Change() 2 3 Dim arr() As String 4 Dim sHit As String 5 Dim sNot As String 6 Dim search As String 7 Dim all As Variant 8 Dim i As Long 9 10 ReDim arr(0) 11 i = 0 12 Do 13 arr(UBound(arr)) = Me.LstCandidate.List(i) 14 i = i + 1 15 If i = Me.LstCandidate.ListCount Then Exit Do 16 ReDim Preserve arr(UBound(arr) + 1) 17 Loop 18 19 20 Me.LstCandidate.Clear 21 22 search = Me.txtSchBox.Value 23 24 For i = LBound(arr) To UBound(arr) 25 If arr(i) Like "*" & search & "*" Then 26 sHit = sHit & arr(i) & "," 27 Else 28 sNot = sNot & arr(i) & "," 29 End If 30 Next 31 32 all = sHit & sNot 33 'using delimiter and change into array 34 all = Split(all, ",") 35 36 For i = LBound(all) To UBound(all) 37 If Not all(i) Like "" Then 38 Me.LstCandidate.AddItem all(i) 39 End If 40 Next 41 42End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/19 10:41