1
ワークシートにリストボックスがあり、指定されたセルをクリックするとアクティブになります。このセルに書いてリストボックスをフィルタリングしたいと思います。例えば、そのセルに "asd"と書くと、リストボックスは "asd"で始まる行をリアルタイムで返します。VBAリアルタイムフィルタリストボックスのセル値
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Value <> "" Then
With ListBox1
For i = .ListCount - 1 To 0 Step -1
If InStr(1, LCase(.List(i, 0)), LCase(Target.Value)) = 0 And _
InStr(1, LCase(.List(i, 1)), LCase(Target.Value)) = 0 And _
InStr(1, LCase(.List(i, 2)), LCase(Target.Value)) = 0 And _
InStr(1, LCase(.List(i, 3)), LCase(Target.Value)) = 0 Then
.RemoveItem i
End If
Next i
End With
End If
End Sub
私はそれを持っていますが、動作しません。
実際には「機能しない」とはどういう意味ですか?スローされたエラーとそれらをスローしている行についての詳細を指定してください – user3598756
セルの非アクティブ化を待っています。つまり、別のセルを選択したときに機能します。しかし、私はあなたが書いている間にそれを実行したいと思います。したがって、適切な線を見て正しい線を選択することができます。 – Tumurtay
AFAIK、 'worksheet_change'イベントではできません。すべての変更が完了したときにこのイベントが発生するので、セルを非アクティブ化したときには起動しません(はい、Enterボタンを押しても - 選択は変更されますが、セルがアクティブで変更されています)。このようなイベントテキストボックスにはTextBoxが含まれているため、リストにTextBoxを追加すると、必要なものを構築できます。 – CommonSense