【Excel】表を複数の条件で絞り込む②

①マクロを使えるようにする
マクロを使えるようにする」を参照

②検索文字入力欄と検索ボタンを配置

③ボタン配置時の以下の画面で「マクロ名」を「SearchGoods」として「新規作成」を押す

④「Microsoft Visual Basic for Applications」にて以下のコードを記載
※表の形式に応じて「★」のついた箇所の数値を変更

Sub SearchGoods()
'検索文字入力行・列
Dim searchValueRow As Integer: searchValueRow = 2 '★
Dim searchValueCol As Integer: searchValueCol = 2 '★
'検索対象列
Dim targetCol As Integer: targetCol = 3 '★
'検索開始行
Dim startRow As Integer: startRow = 5 '★
'検索終了行
Dim lastRow As Integer: lastRow = 9 '★

'半角文字で区切った検索文字を配列に格納
Dim searchValues() As String: searchValues = Split(Cells(searchValueRow, searchValueCol).Value, " ")

'開始行から終了行までループ
For i = startRow To lastRow Step 1
Dim val As Variant
'半角文字で区切った検索文字でループ
For Each val In searchValues
'検索文字が含まれない場合は行を非表示にして次の行へ
If InStr(Cells(i, targetCol).Value, val) = 0 Then
Rows(i).Hidden = True
GoTo Continue
End If
Next val
'全ての検索文字が含まれる場合、または検索文字が何も入力されていない場合は
'行を表示
Rows(i).Hidden = False
Continue:
Next
End Sub

検索データの行数が増える場合は10行目のコードを以下のようにしておく事で、
追加した行数も考慮して最終行の取得が可能

Dim lastRow As Integer: lastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1

【Excel】印刷設定画面を起動する(初期値を指定する)

まずは印刷設定画面を起動する」を参照

「Application.Dialogs(xlDialogPrint).Show」メソッドに以下の引数を渡すことで初期値を設定可能

arg1 = 印刷範囲(1:すべて、2:ページ指定)
arg2 = 開始
arg3 = 終了
arg4 = 部数
arg5 = 簡易印刷(0:しない、1:する) ※1:するにした場合は罫線などが表示されない
arg6 = 印刷プレビュー(Excel5以降のVBAの場合機能しません。代わりにxlDialogPrintPreviewダイアログを使用してください。)
arg7 = メモ印刷(1:シートとセルの値のみ、2:コメントも
arg8 = カラー印刷※Mac用
arg9 = 紙送り(1:連続紙カセット用、2:カットシートまたは手動フィード)※Mac用
arg10 = 印刷品質(dpi)
arg11 = 縦方向の解像度(dpi)
arg12 = 印刷対象(1:選択した部分、2:ブック全体、3:選択したシート、4:テーブル)
arg13 = プリンタ名
arg14 = ファイルへ出力(False:チェックOFF、True:チェックON)
arg15 = 部単位で印刷(False:チェックOFF、True:チェックON)

●ソースコード(実装例) ※設定不要な部分は省略可

Sub 印刷ダイアログ()
Application.Dialogs(xlDialogPrint).Show _
Arg1:=2, _
Arg2:=1, _
Arg3:=2, _
Arg4:=5, _
Arg5:=0, _
Arg6:=False, _
Arg7:=2, _
Arg8:=1, _
Arg9:=1, _
Arg10:=600, _
Arg11:=600, _
Arg12:=3, _
Arg13:="Microsoft Print to PDF", _
Arg14:=True, _
Arg15:=False
End Sub