下記のコードでリストボックスを複数選択して
抽出する場合のやり方をおしえてくれませんでしょうか
下記のコードではうまく抽出できないのです。
添付ファイルもつけました。
お願い致します。
Private Sub CommandButton1_Click()
With ListBox1
If .ListIndex = -1 Then Exit Sub
For d = 0 To .ListCount - 1
If .Selected(d) = True Then
Range("a1").AutoFilter Field:=2, Criteria1:=.List(d)
End If
Next
End With
End Sub
No.3ベストアンサー
- 回答日時:
こんな感じで。
Private Sub CommandButton1_Click()
Dim a() As String
Dim d As Long
Dim cnt As Long
With Me.ListBox1
For d = 0 To .ListCount - 1
If .Selected(d) Then
cnt = cnt + 1
ReDim Preserve a(1 To cnt)
a(cnt) = .List(d)
End If
Next
If cnt = 0 Then Exit Sub
Range("a1").AutoFilter Field:=2, Criteria1:=a(), Operator:=xlFilterValues
End With
End Sub
お時間があれば教えていただけますでしょうか。
ReDim Preserve a(1 To cnt)
a(cnt) = .List(d)
No.2
- 回答日時:
何個選択するのかでも代わるかもですけど、検索していたらこのようなものが。
https://infoyandssblog.blogspot.com/2018/12/exce …
https://it-hitorigoto.com/several-autofilters/
検証はできないですが、『選択していない項目』をFilter関数で除外していけば(ループで変数を用いて)良いのではないかなぁ~~~~~~~と。
選択していないってのは無論
If .Selected(d) = False Then
になると思います。
ループ内で
status = Filter(status, .List(d) , False)
としたら出来るんじゃないかな?(未検証ですけど)
これなら個数は気にならない気もします。(再三ですが、未検証です)
No.1
- 回答日時:
この様にしたいのかな?
Private Sub CommandButton1_Click()
Dim d As Long
Dim key1 As String, key2 As String
With ListBox1
If .ListIndex = -1 Then Exit Sub
For d = 0 To .ListCount - 1
If .Selected(d) = True Then
If key1 = "" Then key1 = .List(d)
If key1 <> "" Then key2 = .List(d)
End If
Next
Range("A1").AutoFilter 2, key1, xlOr, key2
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) リストボックスに表示されたファイルを削除したい 1 2023/04/19 12:02
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) エクセル VBAで複数セル選択時エラーになる問題 3 2022/10/04 02:40
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
ListBoxでオートフィルター表示
Visual Basic(VBA)
-
ユーザーフォーム内のテキストボックスからオートフィルター抽出を行う方法
Visual Basic(VBA)
-
-
4
ACCESSクエリ抽出条件について
Access(アクセス)
-
5
アクセスのクエリ、リストボックスで複数選択をしたい
Access(アクセス)
-
6
エクセルVBAで複数選択できるように設定したリストボックスの、選択され
Visual Basic(VBA)
-
7
UserForm1.Showでエラーになります。
工学
-
8
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
9
コンボボックスとオートフィルタの連動
Visual Basic(VBA)
-
10
excelのリストボックスで選択した項目をアクティブセルに入力方法
Excel(エクセル)
-
11
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
-
12
リストボックスの選択解除
Visual Basic(VBA)
-
13
指定したシート名以外を非表示にするには?VBA
Excel(エクセル)
-
14
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
15
VBA リストボックス(複数条件)で検索し、転記方法についてご教示ください。
Visual Basic(VBA)
-
16
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
VBAでの一時停止と再開の方法
-
乱数の桁数指定、または範囲指定。
-
ということですか 他に固定りよ...
-
Visual BasicのUserFormが閉じ...
-
アセンブラによるウェイト(WAIT...
-
ListBox 複数選択 で オートフ...
-
UWSCの終了の仕方
-
EXCEL VBA(初心者)印刷ルー...
-
C言語でファクト関数を使わずに...
-
範囲指定したセルを1つずつ飛...
-
プログラムはif文とforループが...
-
一巡伝達関数と開ループ伝達関数
-
Do whileでExitせず、ループの...
-
alarmの使用について
-
イベントの発生を待つ
-
Escキーを押すと、中断する時と...
-
VB6 ListIndexのコピー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAでの一時停止と再開の方法
-
ループ7回目の悪役令嬢は、元敵...
-
UWSCの終了の仕方
-
Escキーを押すと、中断する時と...
-
エクセルの当番表を作っていま...
-
GIFアニメをループさせたくない
-
VBAで3秒だけ時間を止めたい
-
どなたかこのプログラミングを...
-
VBA for i=1 to lastrow
-
DOSコマンドのループ内のTIMEコ...
-
ListBox 複数選択 で オートフ...
-
vbscriptでIE自動入力(途中で...
-
vb.netからエクセル関数書き込み
-
DoEventsが必要な理由について
-
Java 南京錠
-
アクティブセルから、A列最終行...
-
テキストボックスの名前に変数...
-
範囲指定したセルを1つずつ飛...
-
VBA Dir関数でファイルをループ...
おすすめ情報