プロが教える店舗&オフィスのセキュリティ対策術

初めまして。

EXCEL2007で、VBAからFORMULA式を使って別ブックを参照するVLOOKUPを埋め込もうとしています。
このとき、対象となる別ブックのシートに、検索値に合致する情報がないと、「シートの選択」ダイアログが出てしまうのですが、これを出さずに、式を生かしたまま「#N/A」扱いにする(=ワークシート上でVLOOKUPに失敗したときと同じ結果とする)方法はないでしょうか?

いろいろ試したのですが解決策が見つかりませんでした。

実装コードはつぎのような形になってます。

Sheet1.Formula = "=VLOOKUP(B2,'[Book2.xls]Sheet1!$B1:$C255,2,FALSE)"

Book2のSheet1のB1:C255に、検索キー[B2]の値があるとき、C列の値を取ろうとしています。
このとき、検索に失敗すると、コード実行中に「シートの選択」ダイアログが出てしまうので、これを回避したいのが質問の主題です。

Application.DisplayAlerts = FALSE でもダメでした。

なにか良いアイデアがありましたらご教唆願います。

A 回答 (1件)

通常、


>対象となる別ブックのシートに、検索値に合致する情報がない
場合、#N/A が返ります。

>対象となる別ブックのシートに、検索値に合致する情報がないと、「シートの選択」ダイアログが出てしまう
...という現象は、その『別ブック』に該当シートが無い場合に発生します。
例示で言えば [Book2.xls] に Sheet1 という名前のシートが無い時。

回避するには、[Book2.xls] に Sheet1 というシートが存在する事を確認してから式を埋め込む事くらいでしょうか。

もっとも、存在するかしないか判らないシートを参照するVLOOKUP式を埋め込む事は無いように思えますから、
ハズれたアドバイスかもしれません。



余談ですが、『実装コード』と断るならば、コピーペーストして実際に動くコードを載せましょう。
そのコードでは動きません。
    • good
    • 0
この回答へのお礼

end-uさん
アドバイスありがとうございました。
コードはサンプルをつくってコピーペーストしたほうがよかったですね。今後注意します。

お礼日時:2009/01/22 00:11

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