
エクセルにて部品の管理表を作成しています。
列項目としては部品名、メーカー、型番があり、ユーザーフォーム内のテキストボックス(部品名、メーカー、型番)から部分一致の検索(コマンドボタン)を行い、オートフィルタにより抽出を行いたいです。
検索のコマンドボタンのマクロは以下の通りです。
Private Sub kensaku_Click()
Dim buhin As Variant
Dim maker As Variant
Dim kataban As Variant
buhin = buhin_TextBox1.Text
maker = maker_TextBox2.Text
kataban = kataban_TextBox3.Text
Selection.AutoFilter Field:=1, Criteria1:="=*" & buhin & "*"
Selection.AutoFilter Field:=2, Criteria1:="=*" & maker & "*"
Selection.AutoFilter Field:=3, Criteria1:="=*" & kataban & "*"
End Sub
この場合だと、部品名、メーカー、型番内に空欄のセルが入っている場合とセル内が数値だった場合、データが抽出されません。
どなたか原因、改善策についてご教授いただけないでしょうか。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
#2の回答を読み返してみました。
判り難いかも、、、
多分、セル側の数値を文字にする方法(書式ではなく 'を付加する)などが考えられます。は乱暴ですね。
数値に*はそもそもな<=や>ですから、そのまま抽出出来れば良いのだと思います。
*文字*や数値が混在するのなら、やはり条件を2つにする事が簡単だと思います。要件が合わなかったら忘れてください。
If buhin <> "" Then
Selection.AutoFilter Field:=1, Criteria1:="=*" & buhin & "*"
End If
If maker <> "" Then
Selection.AutoFilter Field:=2, Criteria1:="=*" & maker & "*"
End If
If kataban <> "" Then
Selection.AutoFilter Field:=3, Criteria1:="=*" & kataban & "*", Operator:=xlOr, Criteria2:=kataban
End If
No.2
- 回答日時:
こんばんは、
>部品名、メーカー、型番内に空欄のセルが入っている場合
Criteria1:="=*" なので 該当がなくすべて表示されません。
対策としては
If buhin <> "" Then Selection.AutoFilter Field:=1, Criteria1:="=*" & buhin & "*"
こんな感じでどうでしょう。(値がある場合のみフィルタ実行)
>セル内が数値だった場合
これに付いては、色々ありますが、要件によって分ける必要があるかも知れません。
パターンマッチング、ワイルドカードをどうしても使用するのであれば
セル側の数値を文字にする方法(書式ではなく 'を付加する)などが考えられます。
又はTextBox3の値が数値であった場合、IFで分岐して
Selection.AutoFilter Field:=3, Criteria1:= kataban で処理するとか、、
どの様なデータでどの様な結果を出したいか不明なので(*を使用している為)
他にも良く分かりませんが、2条件(数値と文字列)を作成してフィルタ実行するとか、、かな。。
No.1
- 回答日時:
基本を押さえて。
(いくつかのページで構成されてます)http://officetanaka.net/excel/vba/tips/tips155.htm
3つ以上の場合。
https://daitaideit.com/vba-autofilter-multi/#mok …
ググって参考になると思う箇所を載せました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのフィルター操作 5 2023/08/08 09:48
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) 前回質問の続きになりますが、下記マクロでシート1からシート2の抽出項目セルB3「りんご」とセルC2「 2 2022/12/02 17:37
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Visual Basic(VBA) Sheet1をフィルターで「りんご」を抽出し、Sheet2へ地域を貼り付ける下記マクロを変更して S 2 2022/12/11 03:01
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】入力フォームを使った、フィルタについて
Visual Basic(VBA)
-
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
-
4
VBA フォームに入力された数値を検索条件としたい
Visual Basic(VBA)
-
5
ユーザーフォームのテキストボックスに配列の値を読み込む方法を教えて下さい
Visual Basic(VBA)
-
6
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
エクセルで検索窓のようなものを作る
Excel(エクセル)
-
9
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
10
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
11
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
12
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
-
13
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
14
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
15
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
16
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
17
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
18
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
19
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
20
コンボボックスとオートフィルタの連動
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Teratermマクロの戻り値の取得失敗
-
ノーツで特定文書を開く方法を...
-
VISCAプロトコル(RS232C通信)...
-
SDカードのSPI接続について...
-
Visual C++からftpを使う
-
データリーダーからのデータ読...
-
ネットワークフォルダの中身を...
-
system関数のエラー検出
-
PCに保存していた写真を見られ...
-
<a href="file:///フォルダ名/...
-
同名フォルダを作成し、そのフ...
-
拡張子をつくる
-
linux duコマンドで困っています。
-
ExcelVBAでリンク先の対象のフ...
-
MkDir パス名が無効です
-
リンク貼り付けの際にファイル...
-
【Access2000】CSVファイルのイ...
-
infoseekのHPはindex.shtmにす...
-
メルカリを退会して再登録した...
-
検索用ソフトEverythingについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Teratermマクロの戻り値の取得失敗
-
ネットワークフォルダの中身を...
-
Windowsのバッチファイルでcall...
-
テキストボックスのフォーカス...
-
バッチ(Windows2000)での解析エ...
-
EXCELで右クリックメニューの追加
-
ユーザーフォーム内のテキスト...
-
コマンドプロンプトでサービス...
-
シリアル通信でのread関数の戻り値
-
バッチファイル pause時の文字...
-
データリーダーからのデータ読...
-
コマンドプロンプトで印刷実行
-
system関数のエラー検出
-
telnetで接続した先のコマンド...
-
VBAチェックボックスで有効無効...
-
リストボックス2に表示されたフ...
-
VBSで指定した時刻にメッセージ...
-
VBで定期的にタイムサーバに時...
-
表示を標準か改ページプレビュ...
-
ExcelVBA WorkSheet上の全てのC...
おすすめ情報