• ベストアンサー

エクセルVBAで#N/Aのようなエラー値を含むセルの検出は

エクセルVBAでセルに#N/Aのようなエラー値を含む場合Ifを使った構文で制御したいのですが、エラー値であるかどうかを調査するにはどうすれば良いでしょうか。教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#7749
noname#7749
回答No.2

ワークシート関数のISERRORを使えばよいようです。 #N/A、#VALUE!、#REF!、#DIV/0!、#NUM!、#NAME?、#NULL! のいずれでもTRUEが返ります。 エラーの種類を検出するには、ERROR.TYPE関数を使用します。ただし、ERROR.TYPE関数でエラーのないセルを参照すると、#N/A が返ります。 詳細は、キーワード「エラー」または「IS関数」でヘルプをご参照ください。 VBAを使う場合は、CVErr 関数でエラー値を検出できます。 (詳細は、キーワード「セルのエラー値」で。)

shimobe
質問者

お礼

 ありがとうございました。参考になりました。 ヘルプを参照し、何とか希望通りになりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

Sub test04() Dim cl As Range For Each cl In Range("a1:c5") If IsError(cl) Then MsgBox "error.Value" Else MsgBox cl End If Next End Sub が参考になりませんか。

shimobe
質問者

お礼

ありがとうございました。参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • もしセルが"#N/A"なら~をする・・・には?

    Excel2002VBAで、 「指定セルにエラーの"#N/A"が出ている場合~の処理をする」という場合、 If range("a1")="#N/A" then としたら、型が一致しません エラー13と出ました。 どのようにすればうまくいくのでしょうか?

  • 《エクセル》「エラー値“#N/A”の場合は何も表示しない」としたいのです

    エクセル2000で作業をしています。 VLOOKUPを使って、別ワークシートにあるデータを拾っているのですが、データが存在しないものは“#N/A”と表示されますよね? これがたくさんあると見た目にあまりよろしくないので、「そのセルがエラー値“#N/A”の場合は何も表示しない」としたいのですが、式の設定がよくわかりません。 ためしにVLOOKUPの外側をIFで囲んでみたのですが、 =IF(A1=#N/A,"",VLOOKUP(A1,参照するワークシート名!B1:F100,1,FALSE)) ↑これではエラーが出てしまいました。 よろしくお願いします。

  • vbaにおいて、セルのエラー検出に関して

    vbaにてセルに入力する数式のエラー検出に関して教えてください。 iserror関数で検出できない数式を簡単に検出する方法ありませんか? sub test() dim str as string str=" C2*C3* " cells(5,7).value=str end sub 簡単なVBAのコードですが、*の右側はセル相対参照もセル絶対参照も数値も入っていませんので、数式としてはエラーです。 strの値を(5,7)のセルに放り込んだら、vbaのエラーで停止してしまいます。 かといって、iserror()を使って、 sub test() dim str as string str="C2*C3*" if iserror(str)=true then else cells(5,7).value=str end if end sub としても、エラーをはじいてくれず、VBAでもエラーを出力してしまいます。 力業で、strの数式エラーをはじくしか方法はないのでしょうか? インターネットを調べているのですが、的を射た答えが出てきません。 どなたか詳しい方ご教示ください。

  • VBA エクセル #N/Aで実行時エラー 13 型が一致しません

    お世話になります。 あるマクロを実行しようとすると、#N/Aのセルに来ると「実行時エラー 13 型が一致しません」とエラーが出てしまいますので、#N/Aを?に書き換えようと下記のマクロを作りましたが結果は同じでした。たぶんとんでもなく初歩的なミスだと思うのですが、どう対処すればよいのでしょうか?よろしくご指導くださいませ。 セルの内容は縦にこんな感じで並んでいます。 755754 755754 #N/A #N/A 713512 713512 マクロは Sub reword() Dim i As Long i = 1 Do Until Cells(i, 1).Value = "" If Cells(i, 1).Value = "#N/A" Then Cells(i, 1).Value = "?" End If i = i + 1 Loop End Sub #N/AのところでLoopはとまり、エラーが出ます。

  • エクセル VBAで セルがエラーの場合の判別法は?

    ワークシート関数ならセルA1がエラーかどうかは =ISERROR(A1) でわかりますが、VBAで 「If A1がエラーだったら Then~」とういのはどのように書くのでしょうか?

  • エクセル VBAでエラーがでます

    エクセルのVBAで 以下の文を書くと、赤くエラーがでます。 「新」が反転します。 Range("o2").Value = "=IF(n2=0,"新","再(既)")" セルの中に、関数を入れたいのですが、 方法が間違ってますでしょうか? 宜しくお願いいたします。

  • エクセルVBAでセル結合

    いつもお世話になっています。 エクセル2003でVBAを使って下記をしたいのでその、VBA構文を教えて下さい。 特定の列のあるセルに文字が入っています。 (文字が入っている列は固定ですが、行番号はデータによって変わります。例えば、Aデータの場合は「J30」、Bデータの場合は、「J55」だったりします。) この文字が入っているセルをVBAで検索し、検索したセルを右隣のセルと結合します。(先ほどのAデータの場合、J30:Z30に結合します。) 更に、文字が入っているセルが2以上の複数の場合があります。(先ほどのAデータの場合、「J30」と「J40」と「J45」という感じです。文字が入っているセルの数はデータにより異なります。) 結合が終わり、このシートのデータがあるところだけに罫線を引きます。(このシートのデータというのは、前述の文字とそれ以外は、「数字」と「・」です。 ややこしいですが、よろしくお願いします。

  • エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです!

    エクセルのセル内の「数式」の一括変更をVBAなどで行いたいです! いま=O48*($E$8/100)となっている算式を、 =IF(ISNUMBER(O48*($E$8/100)),O48*($E$8/100),"N/A") としたいのです。 また、このような変換を行うべきセルが数百個あり、これをボタンひとつもしくは Ctl+aなどで行えるようにしたいのです。 式の返還は単純で、最初の式をxとすると、IF(ISNUMBER(x),x,"N/A") と置き換えるだけなので、たとえばxという変数に今のセル内の式を代入し、それから IF~の式の指定場所にxを入れる・・・というようなプログラミング処理ができるのでは とかんがえ、質問しました。 よいアイデアをください!!明日までにやる必要があり困っています・・・

  • EXCELでVBAを使用してセル移動のコントロールをしています。

    EXCELでVBAを使用してセル移動のコントロールをしています。 主にENTERキー、SHIHT+TAB キーでのセル移動の制御を行っていますが、 EXCELの機能で矢印キー↑↓←→のキー操作が邪魔で、 思うような位置にセルが移動しなく、 たぶんEXCEL側の制御の動きをしているのではないかと思うのです。 VBAでセル移動の制御をしているせいか、 EXCEL制御で動く矢印キーが思うように制御しません。 そこで、このEXCEL制御の矢印キーの動きをしないようにと考えてます。 どのようにしたら、矢印キー制御を阻止できるでしょうか? 教えて頂けませんか?

  • エクセルで#N/Aエラーの表示をけしたい

    エクセルで#N/Aエラーの表示をけしたいんですが