プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
添付したファイルのように
オプションポタンを押すと 男 女が
リストボックス1に表示されます。
どちらかが選択されたら
リストボックス2に血液型が表示されます。
ここまではできましたが、
コマンドボタンを押して、抽出する方法
わかれば、おしえてくれませんでしょうか
以前、頂戴してコードのところわかりません。


Private Sub OptionButton1_Click()
With ListBox1
.Clear
.AddItem "男"
.AddItem "女"
End With
End Sub

------------------------------------------------
Private Sub ListBox1_Click()
With ListBox2
.Clear
.AddItem "A"
.AddItem "B"
.AddItem "O"
.AddItem "AB"
End With
End Sub
------------------------------------------------------
下記ののコードなんですが
どうしたらよいのか
おしえてくれませんでしょうか



Dim a() As String
Dim d As Long
Dim cnt As Long

With Me.ListBox2
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("B3").AutoFilter Field:=3, Criteria1:=a(), Operator:=xlFilterValues
End With

「ListBoxでオートフィルター表示」の質問画像

質問者からの補足コメント

  • うーん・・・

    めぐみん様
    いつもお世話になっております。
    Range("B3").CurrentRegion.AutoFilter field:=3, Criteria1:=ListBox1.Value, Operator:=xlAnd, field:=4, Criteria2:=ListBox2.Value
    で試しましたがうまくいきません。

      補足日時:2020/11/13 08:37
  • へこむわー

    Range("B3").CurrentRegion.AutoFilter field:=3, Criteria1:=ListBox1.Value, Operator:=xlAnd, field:=4, Criteria2:=ListBox2.Value

    Operator:=xlAnd
    Operator:=xlOrだとでますが、
    男で かつ A だと でませんです。

      補足日時:2020/11/13 08:58
  • うまくできました。
    添付したファイルのように
    思い通りにできるようになりました。
    有難うございます。

    「ListBoxでオートフィルター表示」の補足画像3
    No.4の回答に寄せられた補足コメントです。 補足日時:2020/11/13 20:52

A 回答 (3件)

No.2です。



検証できる状態ではないのでググってみました。

https://www.239-programing.com/excel-vba/basic/b …

こちらのサイトの中央辺りにある、

・AutoFilter メソッドの使用例3
2つの項目(列)に対してそれぞれ1つの条件でフィルタをかける例です。

で見てみるとAutofilterのそれぞれのフィールドに検索したい値を別々に記載するようですね。
すなわち『且つ』は1つのフィールドでの複数条件なのかな???と。
この回答への補足あり
    • good
    • 0
この回答へのお礼

うまくできました。
添付したファイルのように
思い通りにできるようになりました。
有難うございます。

お礼日時:2020/11/13 20:52

まず『男・女』をオプションボタンでってのが不明ですね。


相対する物がないですから選択が『Yes or No』ならチェックボックスが良いと思います。

けど、ListBox1で男女を分けたとしてもListBox2での血液型の値は変わるものではないので(多分)、チェックボックスも不要な気もします。

既出ではありますが『何故このような仕様にされているのか?』が不明です。
それと各ListBoxでの選択値は1つのはずですから、複数選択の手段を取る必要はないと思われますけど?

極端に書けば

Private Sub CommandButton1_Click()
Debug.Print ListBox1.Value, ListBox2.Value
End Sub

これでそれぞれのListBoxの選択されてる値は取得可能なはずです。
⇒選択していない場合のチェックが必要かもですが。

あとはそれぞれを検索値として与えれば宜しいのでは?
2つの条件による場合はマクロの自動記録でも取れるかもですし。

と身体に穴を開けてる初級レベルは思います。
    • good
    • 0


何をしたいのかよくわかりません
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!