
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

No.1ベストアンサー
- 回答日時:
こんばんは
>この先の検索条件の付け加え方がネットを探してもいい感じのものが見つけられず~
ご提示のコードで、条件に合っているかで抽出しているのは、
>If myData(i, 20) Like "*" ~~~
の部分ですから、ここに加えたい条件を付け加えれば良いのではないでしょうか?
And条件なのかOrなのかわかりませんけれど、
Cells(i, 18) = 血液型の種類
みたいな感じ。
「不明」となっているのをどのように扱いたいかによって、単純な「=」の比較だけで良いのかどうかわかりませんけれど・・・
(「不明」の場合は、全部の血液型を条件に合っているとみなすとか…)
えーーーって思うくらいかんたんな事だったんですね!!!
びっくりです。
できました!!!
何ということでしょう!!!!
相談して本当に良かったで♪ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ワークシート内を検索 1 2022/12/19 23:46
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表にフィルターをかけ、絞った...
-
【VBA】ユーザーフォーム リス...
-
16進数から2進数へ
-
配列に画像を格納
-
array関数で格納した配列の型を...
-
FileListBoxでの複数ファイル選択
-
[エクセル]連続する指定範囲か...
-
[VBA]改行入りのセルの値を配列...
-
C#での動的配列作成方法について
-
VB6.0 ファイルの一括読込み
-
INDEX(D:D,L3)の意味は?
-
エクセルの関数 一列おき 文...
-
【C#】二次元配列へのcsvファイ...
-
Excelでエラー#N/Aを含む最小値...
-
C#で、引数における一次元と二...
-
csv形式のファイルを配列に...
-
ExcelのINDEXとMATCH関数でスピ...
-
EXCEL VBA カンマ区切りの文字...
-
Vba Validationの選択状態を知...
-
CSVファイルの読み込みと表示(V...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
表にフィルターをかけ、絞った...
-
array関数で格納した配列の型を...
-
【VBA】ユーザーフォーム リス...
-
配列がとびとびである場合の書き方
-
DataSetから、DataTableを取得...
-
読み込みで一行おきに配列に格納
-
エクセルでエラーを無視して一...
-
VBAでの100万行以上のデータの...
-
.NET - 配列変数を省略可能の引...
-
iniファイルのキーと値を取得す...
-
Excel オートフィルタのリスト...
-
SUMPRODUCT関数を用いた最小値
-
VBA 配列に格納した値の平均の...
-
Datatableへの代入
-
VB6.0 ファイルの一括読込み
-
[VBA]改行入りのセルの値を配列...
おすすめ情報