目次:
- エラー後に再開する
- このエラー処理ビジネスをすべて真正面目に保つために、ここではすばやく簡単な要約を示します。エラー処理コードのブロックには、次のような特徴があります。
- 場合によっては、エラーを無視しても問題ありません。 On Error Resume Nextステートメントが有効になります。
ビデオ: MsgBox(用來秀出方塊訊息)Value(功能用來選擇內容) 2024
Excel VBAでエラーを処理する必要がある場合は、OnErrorステートメントを使用できます。しかし、あなたが最初に知る必要があることがいくつかあります。 On Errorステートメントは、3つの方法で使用できます。
構文 | 動作内容 |
---|---|
エラー時GoTo label | このステートメントを実行すると、VBAは指定されたラベルに続く
ステートメントで実行を再開します。ラベルの後にコロン を含めて、VBAがそれをラベルとして認識できるようにする必要があります。 |
On Error GoTo 0 | このステートメントを実行すると、VBAは通常の
エラーチェック動作を再開します。 他のOn Errorステートメントのいずれかを使用した後、またはプロシージャでエラー処理 を削除する場合は、このステートメントを使用します。 |
On Error Resume Next | このステートメントを実行すると、VBAはすべてのエラーを無視して
次のステートメントで実行を再開します。 |
エラー後に再開する
たとえば、エラーを説明するメッセージを表示して、プロシージャを終了することができます。 (前述のEnterSquareRoot5の例ではこの手法を使用しています)。可能であれば、エラーから回復したい場合もあります。
エラーから回復するには、Resumeステートメントを使用する必要があります。これにより、エラー状態がクリアされ、ある場所で実行を続行できます。 Resumeステートメントは、3つの方法で使用できます。
構文 | 動作内容 |
---|---|
再開 | エラーの原因となったステートメントで実行を再開します。エラー処理コードで問題が修正され、
続行する場合は これを使用してください。 |
再開次へ | エラーの原因となった
ステートメントの直後のステートメントで実行を再開します。これは基本的に エラーを無視します。 |
再開 label | 指定した ラベル で実行が再開されます。 |
Sub EnterSquareRoot6()Dim Num As Variant Dim Msg As String Dims As Integer TryAgain: 'エラー処理の設定エラーGoTo BadEntry '値を求めるプロンプトNum = InputBox( "値を入力")Num = "" Then Exit Sub'の場合平方根ActiveCellを挿入します。 Value = Sqr(Num)Exit Sub BadEntry:Msg = Err。 Msg = "Msg =" Msg = "Msg =" Msg = "Msg =" Msg = "Msg ="非負の値を入力します。 "Msg = Msg&vbNewLine&vbNewLine&"もう一度お試しください。 "Ans = MsgBox(Msg、vbYesNo + vbCritical)If Ans = vbYes Then Then TryAgain End Sub
このプロシージャには別のラベルTryAgainがあります。エラーが発生すると、BadEntryラベルで実行が続行され、コードには以下のメッセージが表示されます。ユーザーが[はい]をクリックして応答すると、Resumeステートメントが起動し、実行がTryAgainラベルにジャンプします。ユーザーが「いいえ」をクリックすると、手順は終了します。
エラーが発生した場合、ユーザは再試行するかどうかを決定することができる。
エラーメッセージにはエラー番号と「公式」エラーの説明も含まれています。Resumeステートメントは、エラー状態をクリアしてから続行します。これを確認するには、前の例の最後から2番目のステートメントに次のステートメントを代入してください。
If Ans = vbYes Then GoTo TryAgain
ResumeではなくGoToを使用するとコードが正しく機能しません。説明するには、負の数を入力します。エラープロンプトが表示されます。 [はい]をクリックして再試行し、
別の 負の数を入力します。元のエラー状態がクリアされなかったため、この2番目のエラーはトラップされません。 簡単なエラー処理
このエラー処理ビジネスをすべて真正面目に保つために、ここではすばやく簡単な要約を示します。エラー処理コードのブロックには、次のような特徴があります。
On Errorステートメントで指定されたラベルの直後から開始されます。
-
エラーが発生した場合に限り、マクロに到達する必要があります。つまり、Exit SubやExit Functionなどの文をラベルの直前に使用する必要があります。
-
再開文が必要な場合があります。エラーが発生したときにプロシージャを中止しない場合は、メインコードに戻る前にResume文を実行する必要があります。
-
エラーを無視するタイミングを知る
場合によっては、エラーを無視しても問題ありません。 On Error Resume Nextステートメントが有効になります。
次の例では、選択範囲内の各セルをループし、その値を平方根に変換します。
Sub SelectionSqrt()DimセルAs範囲If TypeName(Selection)<> "range" Then Exit Sub For EachセルIn Selectionセル。選択範囲内のセルのいずれかに負の数またはテキストが含まれていると、エラーメッセージが表示されます。 Value = Sqr(セルの値)次のセルEnd Sub
この場合、平方根に変換できない値を含むセルはすべてスキップします。 If-Then構造体を使用してあらゆる種類のエラーチェック機能を作成することができますが、発生するエラーを無視するだけで、より良い(単純な)ソリューションを考案できます。
On Error Resume Nextステートメントを使用して、次のルーチンを実行します。
Sub SelectionSqrt()Dim Cell As Range If TypeName(Selection)<> "range" Then Exit Sub On Error細胞。値= Sqr(セル値)次のセルEnd Sub
一般的に、エラーが作業に無害または重要でないと考える場合、On Error Resume Nextステートメントを使用できます。