エクセルVBAでのエラー処理
以下は、私たちは、Excel VBAでの二つのプログラムを見ていきます。 1つのプログラムが単にエラーを無視します。他のプログラムはエラーを打つ時に指定した行で実行を続けます。
状況:
両方のプログラムは、数値の平方根を計算します。
平方根1「は平方根1」コマンドボタンに次のコード行を追加します。
1.まず、我々は2つの範囲オブジェクトを宣言します。私たちは、レンジRNGとセルオブジェクトを呼び出します。
Dim rng As Range, cell As Range
2.私たちは、選択した範囲でのRangeオブジェクトのRNGを初期化します。
Set rng = Selection
3.我々は、ランダムに選択された範囲(この範囲は任意のサイズであってもよい)で各セルの平方根を計算します。エクセルVBAで、あなたは、このために次の各ループのために使用することができます。次のコード行を追加します。
For Each cell In rng Next cell
注:RNGとセルがランダムにここで選択されている、あなたは任意の名前を使用することができます。
あなたのコードの残りの部分でこれらの名前を参照することを忘れないでください。
ループに次のコード行を追加します。4.。
On Error Resume Next
5.次に、我々は値の平方根を計算します。エクセルVBAで、我々はこのためにした関数sqrを使用することができます。ループに次のコード行を追加します。
cell.Value = Sqr(cell.Value)
-
Visual Basicエディターを終了して、プログラムをテストします。
結果:
結論:ExcelのVBAは、このような負の数やテキストとして無効な値を含むセルを無視しています。声明「エラー再開次の」使用せずに、次の2つのエラーを得るでしょう。あなたは必ずエラーを無視しているときのみ、「エラー履歴書上の次の」ステートメントを使用するように注意してくださいすることはOKです。
平方根2「は平方根2」コマンドボタンに次のコード行を追加します。
1.平方根1と同様のプログラムが、と「エラーの再開で次へ」を置き換えます。
On Error GoTo InvalidValue:
注:InvalidValueがランダムにここで選択されている、あなたは任意の名前を使用することができます。
あなたのコードの残りの部分でこの名前を参照することを忘れないでください。
2.次の各ループの外側には、第一次のコード行を追加します。
Exit Sub
この行がなければ、コード(エラーコード)の残りの部分はエラーがない場合でも、実行されます!エラーを打つ時に(コロンを忘れないでください):3.エクセルVBAは「InvalidValue」で始まる行で実行を続けます。次のコード行を追加します。
InvalidValue:
4.私たちは、今の私たちのエラーコードをシンプルに。我々はいくつかのテキストと、エラーが発生したセルのアドレスを持つメッセージボックスを表示します。
MsgBox "can't calculate square root at cell " & cell.Address
エラー・コードを実行した後に実行を再開するために、Excel VBAを指示するために、次の行を追加します。5.。
Resume Next
-
Visual Basicエディターを終了して、プログラムをテストします。
結果: