dポイントプレゼントキャンペーン実施中!

キーワード検索ボックスを作ろうとしていますが、途中マクロを実行すると、「コンパイルエラー 変数が定義されていません」と出て、
Sub 品名検索()の部分が黄色くなり、そのすぐ下のans =が青くなっています。
どうすればよいのでしょうか?
作ったコードは以下です。

Sub 品名検索()
ans = InputBox("文字列を入力してください")
ans = StrConv(ans, vbNarrow) '全角入力を半角に変換
With ActiveSheet
If .AutoFilterMode Then 'オートフィルタモードがオンなら
.AutoFilterMode = False 'リセットする
End If
.Range("A4:IV4").AutoFilter 'オートフィルタモードをセット
.Range("A4:IV4").AutoFilter Field:=5, Criteria1:="=*" & ans & "*" '5つ目のフィルターに検索文字
End With
End Sub

これでE4セルをダブルクリックすると、表示が出てとまってしまいました。

A 回答 (2件)

こんにちは。



使用している変数ansが定義されていないのではないでしょうか?

ソースの上の一番上に"Option Explicit"と書いてあると、使用する変数は必ず宣言が必要となります。(これはエディタのツール→オプションで宣言を強制するかを設定できます。)

回避策としては、Sub 品名検索()・・・の下に、

Dim ans as String

と追加してみてください。

Dim 変数名 as 型

で変数を宣言するということになります。
    • good
    • 0
この回答へのお礼

出来ましたー。
ありがとうございました。

お礼日時:2011/05/10 13:53

「Option Explicit」が記述されていませんか。


これはマクロ内で使用する変数は、先に宣言しておかなければならないという宣言文です。
この為、InputBox関数で「ans」が定義されていない為に警告されたと思います。
因みにプロレベルのコーディングならいざ知らず、一般のVBAユーザでは不要ですのでこのオプションは削除される事をお勧めします。(VBE画面→ツール→オプション→変数の宣言を強制するのチェックを外す)
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
Option Explicitは削除しても問題ないのですね。
これからはOption Explicitの記述なしで作ろうと思います。

お礼日時:2011/05/10 14:02

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