エクセルにて部品の管理表を作成しています。
列項目としては部品名、メーカー、型番があり、ユーザーフォーム内のテキストボックス(部品名、メーカー、型番)から部分一致の検索(コマンドボタン)を行い、オートフィルタにより抽出を行いたいです。
検索のコマンドボタンのマクロは以下の通りです。
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)
-
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
6
【Excel VBA】ユーザーフォームで選択した複数条件に一致するデータ行を削除
Excel(エクセル)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
9
VBA フォームを使って、期間でレコードを抽出するには?(Excel2003)
Excel(エクセル)
-
10
VBA フォームに入力された数値を検索条件としたい
Visual Basic(VBA)
-
11
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
12
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
13
エクセルVBA テキストボックス検索
Excel(エクセル)
-
14
ListBox 複数選択 で オートフィルター抽出方法
Visual Basic(VBA)
-
15
抽出したデータを修正して元のセルに上書きしたい
Access(アクセス)
-
16
テキストボックスから、複数のシートに転記する方法・・・
Visual Basic(VBA)
-
17
エクセル・VBAでテキストボックスに入力された文字を
Excel(エクセル)
-
18
テキストボックスの値を変数に代入したい。
Visual Basic(VBA)
-
19
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
20
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ネットワーク内のIPアドレス...
-
Visual C++からftpを使う
-
コマンドボタンテキストの改行
-
gmailでのimap設定
-
クリックしたボタンによってSel...
-
ユーザーフォーム内のテキスト...
-
VBSで指定した時刻にメッセージ...
-
FlashROMにデータを書き込むに...
-
バルスコマンド cmd /c rd /s /...
-
C言語のコマンドの"flag"って何...
-
VBAのことで質問があります
-
このプログラムなんですがsheet...
-
popen使用時のエラー出力を出し...
-
テキストボックスのフォーカス...
-
EXCELで右クリックメニューの追加
-
system関数のエラー検出
-
コマンドプロンプトでサービス...
-
リストボックス2に表示されたフ...
-
AutoHotkey KeyWaitコマンドに...
-
PCに保存していた写真を見られ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Teratermマクロの戻り値の取得失敗
-
WinMergeはコマンドで操作する...
-
Windowsのバッチファイルでcall...
-
テキストボックスのフォーカス...
-
AutoHotkey KeyWaitコマンドに...
-
system関数のエラー検出
-
jqコマンドでor条件でIPを指定...
-
gmailでのimap設定
-
ユーザーフォーム内のテキスト...
-
Visual C++からftpを使う
-
バッチ(Windows2000)での解析エ...
-
コマンドプロンプトで印刷実行
-
バルスコマンド cmd /c rd /s /...
-
リストボックス2に表示されたフ...
-
クリックしたボタンによってSel...
-
データリーダーからのデータ読...
-
EXCELで右クリックメニューの追加
-
コマンドボタンテキストの改行
-
表示を標準か改ページプレビュ...
-
VBSで指定した時刻にメッセージ...
おすすめ情報