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

Excel2003を使っています。

Range("B1").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=INDIRECT(A1)"

これを使って「=INDIRECT(A1)」を入力規則のリストとして、セルのA1が空欄の状態で入れたいのですが、実行時エラー1004となってしまいます。
セルのA1には複数ある定義された名前のどれか一つが入るようにします。そして、そのどれか一つが入っていれば、エラーは起こることなく入力規則は設定されます。
ただ、A1は後々この資料を使うときに打ち込みたいため、VBAを走らせている段階では空欄のままにしておきたいのです。

これ、VBAを使わず直接入力規則を設定するときも、A1が空欄だと「元の値はエラーと判断されます。続けますか?」というメッセージが出ますよね?
たぶん、これが原因だと思いますが、直接入れるときはそのメッセージを「はい」で強行することができます。
これをVBAで入れるときにもできないものかなと思っています。
VBAで強行して設定する方法はないものでしょうか?

ちなみに「On Error Resume Next」をつけてみましたが、その場合はエラーは出ないものの入力規則も設定されませんでした・・・。

A 回答 (1件)

>ただ、A1は後々この資料を使うときに打ち込みたいため、


>VBAを走らせている段階では空欄のままにしておきたいのです。
設定した後に消去すれば良いと思います。

または入力規則側でエラー制御するか。
Formula1:="=IF(A1="""",A1,INDIRECT(A1))"

http://oshiete.goo.ne.jp/qa/4207340.html?order=asc
    • good
    • 0
この回答へのお礼

すばらしい。
ありがとうございます。

お礼日時:2011/03/08 10:32

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