
エクセルにて部品の管理表を作成しています。
列項目としては部品名、メーカー、型番があり、ユーザーフォーム内のテキストボックス(部品名、メーカー、型番)から部分一致の検索(コマンドボタン)を行い、オートフィルタにより抽出を行いたいです。
検索のコマンドボタンのマクロは以下の通りです。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【VBA】入力フォームを使った、フィルタについて
Visual Basic(VBA)
-
【VBA】【ユーザーフォーム_ListBox】オートフィルタで絞りこんだ値だけを取り出したい
Visual Basic(VBA)
-
VBA フォームに入力された数値を検索条件としたい
Visual Basic(VBA)
-
-
4
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
5
Excelにて、ユーザーフォームで、日付けの範囲を指定し、検索しデーターを抽出し 別シートへ転記した
Excel(エクセル)
-
6
ユーザーフォームのテキストボックスに配列の値を読み込む方法を教えて下さい
Visual Basic(VBA)
-
7
エクセルで検索窓のようなものを作る
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
UserForm1.Showでエラーになります。
工学
-
10
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
11
テキストボックス(VBA)でEnterを押したときに作動するマクロ
Access(アクセス)
-
12
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
13
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
14
数値をワイルドカードでフィルタしたい
Excel(エクセル)
-
15
テキストボックスのvalueとtextの違い
Visual Basic(VBA)
-
16
表にフィルターをかけ、絞ったデータ(可視化セルのみ)を一次元配列として変数に入れるという動作を書きた
Visual Basic(VBA)
-
17
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
18
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
19
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
20
エクセルVBA ユーザーフォームのTextBoxを日付にしたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
system関数のエラー検出
-
VBAチェックボックスで有効無効...
-
RPGでのダメージの算出方法につ...
-
コマンドプロンプトでサービス...
-
OUTLOOKで受信メールを開くとテ...
-
Worksheet_BeforeClick
-
Gitで空白のみの変更を削除した...
-
シリアル通信でのread関数の戻り値
-
データリーダーからのデータ読...
-
バッチファイル pause時の文字...
-
ネットワークフォルダの中身を...
-
シスコルーターにおける、DLCI...
-
Visual C++からftpを使う
-
テキストボックスのフォーカス...
-
GP-IB通信を別PCでモニタしたい
-
PCに保存していた写真を見られ...
-
ExcelVBAでリンク先の対象のフ...
-
linux duコマンドで困っています。
-
OpenFileDialogを使った後にも...
-
<a href="file:///フォルダ名/...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Teratermマクロの戻り値の取得失敗
-
Windowsのバッチファイルでcall...
-
ネットワークフォルダの中身を...
-
バッチ(Windows2000)での解析エ...
-
ユーザーフォーム内のテキスト...
-
Visual C++からftpを使う
-
system関数のエラー検出
-
コマンドプロンプトで印刷実行
-
テキストボックスのフォーカス...
-
VBAチェックボックスで有効無効...
-
コマンドプロンプトでサービス...
-
VISCAプロトコル(RS232C通信)...
-
Office 2011 VBA フォルダ作成
-
OUTLOOKで受信メールを開くとテ...
-
VBで定期的にタイムサーバに時...
-
Excel VBAについて
-
リストボックス2に表示されたフ...
-
バッチファイル pause時の文字...
-
FlashROMにデータを書き込むに...
-
gmailでのimap設定
おすすめ情報