1. ホーム
  2. vba

[解決済み] VBAでIFERRORを使用する

2022-03-06 23:30:05

質問

どなたか助けてください。 いろいろとググってみたのですが、何が問題なのかがわかりません。 私はvbaに手を出しただけなので、確かに専門家ではないのですが...。

私は仕事で巨大なスプレッドシートでいくつかの計算を自動化しようとしているのですが、おそらく本当に愚かな何かを見逃していると思います。 基本的に、計算の1つは、1つのセルを別のセルで割るという単純なものです。 エラーが発生した場合、0を返すようにしたいのですが、以下がつまずき続けているコードです。

Sheets("Bridge").Range("W" & SumIfInt) = Application.WorksheetFunction.IfError(Sheets("Bridge").Range("AA" & SumIfInt) / Sheets("Bridge").Range("D" & SumIfInt), 0)

ランタイムエラー 6 オーバーフローが発生する

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

解決方法は?

If error 機能を使わずに試してみてください。後述するように、次のOn error resumeは慎重に使用する必要があります。

警告 On error resume next がない限り、残りのコードでエラーのすべてのケースをスキップします。 On error goto 0 が存在します。また、特定のエラーを捕捉したい場合は if error = 'number' then を使用すると、それらに応じて処理することができます。Application.worksheetfunction.iserror は、Excel vba よりも Excel で使用した方がよいでしょう。

    On error resume next
    Sheets("Bridge").Range("W" & SumIfInt) = Sheets("Bridge").Range("AA" & 
    SumIfInt) / Sheets("Bridge").Range("D" & SumIfInt)

    if err <>0 then
       Sheets("Bridge").Range("W" & SumIfInt) = 0
    end if
    On error goto 0