エクセルにて部品の管理表を作成しています。
列項目としては部品名、メーカー、型番があり、ユーザーフォーム内のテキストボックス(部品名、メーカー、型番)から部分一致の検索(コマンドボタン)を行い、オートフィルタにより抽出を行いたいです。
検索のコマンドボタンのマクロは以下の通りです。
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.1
- 回答日時:
基本を押さえて。
(いくつかのページで構成されてます)http://officetanaka.net/excel/vba/tips/tips155.htm
3つ以上の場合。
https://daitaideit.com/vba-autofilter-multi/#mok …
ググって参考になると思う箇所を載せました。
No.2
- 回答日時:
こんばんは、
>部品名、メーカー、型番内に空欄のセルが入っている場合
Criteria1:="=*" なので 該当がなくすべて表示されません。
対策としては
If buhin <> "" Then Selection.AutoFilter Field:=1, Criteria1:="=*" & buhin & "*"
こんな感じでどうでしょう。(値がある場合のみフィルタ実行)
>セル内が数値だった場合
これに付いては、色々ありますが、要件によって分ける必要があるかも知れません。
パターンマッチング、ワイルドカードをどうしても使用するのであれば
セル側の数値を文字にする方法(書式ではなく 'を付加する)などが考えられます。
又はTextBox3の値が数値であった場合、IFで分岐して
Selection.AutoFilter Field:=3, Criteria1:= kataban で処理するとか、、
どの様なデータでどの様な結果を出したいか不明なので(*を使用している為)
他にも良く分かりませんが、2条件(数値と文字列)を作成してフィルタ実行するとか、、かな。。
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
お探しの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も見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
【VBA】入力フォームを使った、フィルタについて
Visual Basic(VBA)
-
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
6
VBA フォームに入力された数値を検索条件としたい
Visual Basic(VBA)
-
7
VBA フォームを使って、期間でレコードを抽出するには?(Excel2003)
Excel(エクセル)
-
8
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
9
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
10
【Excel VBA】ユーザーフォームで選択した複数条件に一致するデータ行を削除
Excel(エクセル)
-
11
エクセルVBA テキストボックス検索
Excel(エクセル)
-
12
VBAでユーザーフォームにセル値を表示させるには
Visual Basic(VBA)
-
13
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
14
ListBox 複数選択 で オートフィルター抽出方法
Visual Basic(VBA)
-
15
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
16
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
17
テキストボックスから、複数のシートに転記する方法・・・
Visual Basic(VBA)
-
18
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
19
エクセル・VBAでテキストボックスに入力された文字を
Excel(エクセル)
-
20
フォームのテキストボックスなどの変数名を標準モジュールから参照は可能か?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトで印刷実行
-
データリーダーからのデータ読...
-
イーサネット通信
-
このプログラムなんですがsheet...
-
VBSで指定した時刻にメッセージ...
-
Teratermマクロの戻り値の取得失敗
-
PowerShellでテキスト内にコマ...
-
バッチ(Windows2000)での解析エ...
-
Windowsのバッチファイルでcall...
-
リストボックス2に表示されたフ...
-
VBで定期的にタイムサーバに時...
-
gmailでのimap設定
-
Excelで外部のファイルの場所を...
-
robocopyをすると隠し属性フォ...
-
同名フォルダを作成し、そのフ...
-
拡張子をつくる
-
ExcelVBAでリンク先の対象のフ...
-
linux duコマンドで困っています。
-
参照元Excelファイルをバックグ...
-
PCに保存していた写真を見られ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Teratermマクロの戻り値の取得失敗
-
Windowsのバッチファイルでcall...
-
Visual C++からftpを使う
-
テキストボックスのフォーカス...
-
system関数のエラー検出
-
ユーザーフォーム内のテキスト...
-
FlashROMにデータを書き込むに...
-
バッチ(Windows2000)での解析エ...
-
ネットワーク内のIPアドレス...
-
データリーダーからのデータ読...
-
RPGでのダメージの算出方法につ...
-
シリアル通信でのread関数の戻り値
-
コマンドプロンプトで印刷実行
-
AutoHotkey KeyWaitコマンドに...
-
表示を標準か改ページプレビュ...
-
EXCELで右クリックメニューの追加
-
コマンドボタンテキストの改行
-
C言語のコマンドの"flag"って何...
-
VBで定期的にタイムサーバに時...
-
gmailでのimap設定
おすすめ情報