質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

2129閲覧

excel vba の検索ボックスづくり

ritun

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/03/20 01:46

excelのvba初心者です。
excelのマクロで検索ボックスを作ろうと思い動画を参考にしたのですがrangeクラスのautofilterメソッドが失敗しました。とエラーが出てしまいました。
どのように修正すればよいのかわからないので詳しい方のご指導お願いしたいです。

名前を"cname"
電話番号を"cnumber"
住所を"cadress"
送り先を”cadress2”
とオブジェクト名を付けました

Sub 立ち上げ()
custmor.Show

End Sub

Sub 検索()
If custmor.cname.Text <> "" Then
Range("A1").AutoFilter 2, "" & custmor.cname.Text & ""

Else Range("A1").AutoFilter 2 End If If custmor.cnumber.Text <> "" Then Range("A1").AutoFilter 5, custmor.cnumber.Text Else Range("A1").AutoFilter End If If custmor.cadress.Text <> "" Then Range("A1").AutoFilter 3, "*" & custmor.cadress.Text & "*" Else Range("A1").AutoFilter End If If custmor.cadress2.Text <> "" Then Range("A1").AutoFilter 4, " * " & custmor.cadress2.Text & "*" Else Range("A1").AutoFilter End If

End Sub
イメージ説明

参考にした動画はこちらです
https://youtu.be/fKVJTrPCuV8**ボールドテキスト**

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VBAからフィルターを使ったこと無かったので、
勝手にデバッグしてみました ぉぃぉぃ
https://youtu.be/DG968fWAx78?t=14
↑エラーを強引に出してみました。へんなデバッグ動画ですが、参考となれば・・・

無いとは思いますが
Range("A1").AutoFilter 2, "" & custmor.cname.Text & ""
としているのに、
表の先頭がA1ではなく A3などから?始まっていたりは、
それはないよねぇ。エラーを強引に作り過ぎだって。
イメージ説明
A1から表が始まっていたら、すみませんエラー・バグ探しで的を外しました。

ですが、
フィルターの初期範囲の設定が見当たらなかったので、
(検索フォームを立ち上げた時にあるのかな?)

えっと、テストしてほしいのが、
一度フィルターを表のデータ範囲に手動でかけてから
https://youtu.be/DG968fWAx78?t=108
フォームでテストすると、どうなりますか?

また、質問とは違いますが(迷っているときに余計に混乱させるなよ・・・)
フィルターをかける前に
前回条件クリアなど?
^^^^^^^^^^^^^^^
入っているといいのかなぁと
勝手なデバッグ中に思ったり。

読み返すと、的外れな回答だなぁ・・・と自覚しつつ、
(解決の糸口となればいいなぁ)

投稿2022/03/20 10:34

ken3memo

総合スコア132

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ken3memo

2022/03/20 11:02

https://www.youtube.com/watch?v=fKVJTrPCuV8 みると And条件の検索で、検索条件無しの時にクリアされるみたいですね なので、 私が勝手に妄想した > また、質問とは違いますが(迷っているときに余計に混乱させるなよ・・・) フィルターをかける前に 前回条件クリアなど? ^^^^^^^^^^^^^^^ 入っているといいのかなぁと 勝手なデバッグ中に思ったり。 < は、本当に質問とは無関係でした。ああ恥ずかし・・・
ritun

2022/03/21 05:03

動画を交えた具体的な指摘ありがとうございます。 前回条件のクリアは Dim tbl As ListObject を検索の前に入れるだけでよろしいのでしょうか?
ritun

2022/03/21 05:12

またクリアボタンを作成する場合はどうすればよいでしょうか?
ken3memo

2022/03/21 08:50

私のヘンテコテスト動画 https://youtu.be/DG968fWAx78?t=213 だと、 Range("A1").AutoFilter でクリアしてテストしてましたが、 チャントした 元の参考動画 ※元動画の解説を見ると https://youtu.be/fKVJTrPCuV8?t=825 をみると、 '条件1 If custmor.検索条件1.Text <> "" Then Range("A1").AutoFilter 列, custmor.検索条件1.Text Else Range("A1").AutoFilter 1 End If '条件2 If custmor.検索条件2.Text <> "" Then Range("A1").AutoFilter 列, custmor.検索条件2.Text Else Range("A1").AutoFilter 2 End If のパターンなので、 Range("A1").AutoFilter 2←この2列目の指定など、列指定が必要なのでは? この If テキストボックスに入っているか? <> "" Then 入っていたら検索 Range("A1").AutoFilter 列, custmor.検索条件1.Text Else 入っていなかったら Range("A1").AutoFilter 1 ←条件解除 End If と やっているので、 特にクリアとかいらないかなぁ。 ^^^^^^^^^^^^^^^^^^^^^^ クリアとか気にしない作りになっていると思います たぶん、テストしているときに、 質問のRangeエラーが出たので、外したのかな? その質問ソースをみて、私が、クリアあったほうがいいかなぁと テスト時によけいな事をつぶやいた感じかな。 このコメント欄に画像を貼れなかったので、 https://www.youtube.com/post/UgkxGqWEUE8TwdUEK0ge-260D3iWF6yCLNb5 ↑みたいな感じかなぁ。 うまく、検索フォーム機能、検索フィルタが作れるといいですね。
ritun

2022/03/21 14:15

詳しい解説本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問