gooIDシステムメンテナンスに関するお知らせ

VBA初心者です。そしてユーザーフォームというのを初めて使ってみています。

以下、見様見真似で検索フォームを作成しました。
20列目で文字検索をして該当する行をリスト表示するようにしました。
ここまではなんとかできたのですが・・・・(ほぼコピーですが・・・・)

つかして、血液型による絞り込み機能を入れたいと考えています。
顧客データ一覧の18列目に血液型があり、文字検索&血液型 の条件で検索をかけたいです。

A型・O型・B型・AB型・不明  のリストボックスは用意したのですが
この先の検索条件の付け加え方がネットを探してもいい感じのものが見つけられず・・・

ご教示いただけますと幸いです。どうぞよろしくお願い致します。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Private Sub CommandButton1_Click()
Dim lastRow As Long
Dim myData, myData2(), myno
Dim i As Long, j As Long, cn As Long

Dim myBook As Workbook
Set myBook = Workbooks("顧客検索.xlsm")

'検索するデータを配列 myData に格納しています。
With myBook.Worksheets("顧客データ一覧")
lastRow = .Cells(Rows.Count, 1).End(xlUp).Row
myData = .Range(.Cells(3, 1), .Cells(lastRow, 25)).Value
End With

'配列 myData の中で検索で一致したデータを配列 myData2 に格納しています。
ReDim myData2(1 To lastRow, 1 To 7)
For i = LBound(myData) To UBound(myData)
If myData(i, 20) Like "*" & TextBox1.Value & "*" And myData(i, 20) Like "*" & TextBox2.Value & "*" And myData(i, 20) Like "*" & TextBox3.Value & "*" Then

cn = cn + 1
myData2(cn, 1) = myData(i, 2)
myData2(cn, 2) = myData(i, 24)
myData2(cn, 3) = myData(i, 25)
myData2(cn, 4) = myData(i, 20)
myData2(cn, 5) = myData(i, 19)
myData2(cn, 6) = myData(i, 21)
myData2(cn, 7) = myData(i, 8)

End If
Next i

'検索で一致したデータをリストボックスに表示します。
With ListBox1
.ColumnCount = 7
.ColumnWidths = "20;80;70;70;80;80;80"
.List = myData2
End With

End Sub

「【VBA】ユーザーフォームを使った検索フ」の質問画像
教えて!goo グレード

A 回答 (1件)

こんばんは



>この先の検索条件の付け加え方がネットを探してもいい感じのものが見つけられず~
ご提示のコードで、条件に合っているかで抽出しているのは、
>If myData(i, 20) Like "*" ~~~
の部分ですから、ここに加えたい条件を付け加えれば良いのではないでしょうか?

And条件なのかOrなのかわかりませんけれど、
 Cells(i, 18) = 血液型の種類
みたいな感じ。
「不明」となっているのをどのように扱いたいかによって、単純な「=」の比較だけで良いのかどうかわかりませんけれど・・・
(「不明」の場合は、全部の血液型を条件に合っているとみなすとか…)
    • good
    • 0
この回答へのお礼

解決しました

えーーーって思うくらいかんたんな事だったんですね!!!
びっくりです。
できました!!!
何ということでしょう!!!!

相談して本当に良かったで♪ありがとうございます!

お礼日時:2021/12/01 23:14

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

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング