プロが教えるわが家の防犯対策術!

インプットボックスに入力した語句を、オートフィルターで抽出し、
別シートに転記させたいと思っています。

現在のコードでは、オートフィルターで7列目の登録商品を抽出する際、
インプットボックスに入力した語句がない場合も別シートが作成されてしまいます。

もし、抽出条件がなかったら、「抽出条件がありません」などのメッセージを
表示して、別シートを作成させたくないのですが、
どのようなコートを追加すればよいかわかりません。
VBA初心者です。ご教示お願いします。

Sub test1()
Dim 条件 As String
a = InputBox("商品を入力して下さい")

If StrPtr(a) = 0 Then
MsgBox "キャンセルします"

ElseIf a = "" Then
MsgBox "未入力です", vbExclamation

Else

Range("A5").AutoFilter 7, a
Range("A5").CurrentRegion.Copy
Worksheets.Add
ActiveSheet.Name = a
Range("A1").PasteSpecial xlPasteColumnWidths
Range("A1").PasteSpecial
Range("A1").Select
Application.CutCopyMode = False
Worksheets("sheet1").AutoFilterMode = False

End If

End Sub

A 回答 (3件)

ふと思ったんですが、これだけコード書けてる人なら、この説明で分かるかなと思ったんですが、貴方もしかして、このコード自分で書いたんじゃないですね?



他人が書いたコードをコピペしたか、または『マクロの記録』か何か使ってコーディングしましたか?
    • good
    • 0
この回答へのお礼

本で調べたものをつなぎ合わせて作成しました。

お礼日時:2018/06/18 23:07

下記 URL は find メソッドを使った一例です


https://www.sejuku.net/blog/31055

別に worksheetfunction の find 関数でも良いと思います。


とにかくフィルターかける前の段階で、元のワークシートに、文字列 a が含まれているかどうか調べる。
含まれていたら、a でフィルターかけて別のシートを作ってコピーして貼り付ける。
含まれていなかったら、それで終了。
    • good
    • 0
この回答へのお礼

ありがとうございます。
一度やってみます。

お礼日時:2018/06/18 23:03

Autofilter を使う前に、a でシート全体を検索して、検索結果の true, false で場合分けしたらどうでしょう?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ただ、ご提案いただいた方法もよくわからず・・・
よろしければ詳しく教えてもらえませんでしょうか。

お礼日時:2018/06/18 22:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!