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

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

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

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

解決済

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

ritun
ritun

総合スコア1

VBA

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

1回答

0グッド

0クリップ

838閲覧

投稿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**ボールドテキスト**

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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