目次:
- EnterSquareRootプロシージャの再訪
- On Errorステートメントが宣言どおりに機能しない場合は、設定の1つを変更する必要があります。
- VBAコードでOn Errorステートメントを使用すると、Excelの組み込みエラー処理をバイパスし、独自のエラー処理コードを使用できます。前の例では、ランタイムエラーにより、マクロ実行がBadEntryというラベルのステートメントにジャンプします。その結果、Excelの不公平なエラーメッセージは避けられ、独自のメッセージをユーザーに表示することができます。
ビデオ: データの入力とオートフィル/Excel VBAプログラミング基礎 (2010,2013,2016対応)【動学.tv】 2024
かどうかを確認するために万能On Errorステートメントを使用します。Excel 2016で考えられるすべてのエラーをどのように識別して処理できますか?しばしば、あなたはできません。幸いにも、VBAはこれらの厄介なエラーに対処する別の方法を提供します。
EnterSquareRootプロシージャの再訪
次のコードを調べます。このルーチンは、すべてのエラーをトラップして、InputBoxがキャンセルされたかどうかを確認するために汎用のOn Errorステートメントを使用します。
Sub EnterSquareRoot5()Dim Num As Variant Dim Msg As Stringエラー処理を設定するエラーGoTo BadEntry '値の入力を求めるプロンプトNum = InputBox( "値を入力")キャンセルすると終了するNum = "" Then Exit Sub '平方根ActiveCellを挿入します。 Value = Sqr(Num)Exit Sub BadEntry:Msg = "エラーが発生しました。 "&vbNewLine&vbNewLine Msg = Msg&"範囲が選択されていることを確認し、 "Msg = Msg&"シートが保護されていない、 "Msg = Msg&"を選択し、非負の値を入力します。 "MsgBoxメッセージ、vbCritical End Sub
このルーチンは、 種類の実行時エラーをトラップします。ランタイムエラーをトラップした後、改訂されたEnterSquareRootプロシージャはこのメッセージボックスを表示します。このメッセージボックスには、エラーの可能性が最も高い原因が説明されています。 <! - 1 - >
プロシージャの実行時エラーにより、このセミヘルパーエラーメッセージが生成されます。 エラーが発生していませんか?On Errorステートメントが宣言どおりに機能しない場合は、設定の1つを変更する必要があります。
VBEを有効にします。
-
[ツール]→[オプション]コマンドを選択します。
-
[オプション]ダイアログボックスの[全般]タブをクリックします。
-
<! - 2 - >
[すべてのエラーでブレーク]設定がオフになっていることを確認します。 -
この設定を選択すると、Excelは本質的にOn Errorステートメントを無視します。通常は、エラートラップオプションを未処理エラーでブレークに設定します。
On Errorステートメントについて
VBAコードでOn Errorステートメントを使用すると、Excelの組み込みエラー処理をバイパスし、独自のエラー処理コードを使用できます。前の例では、ランタイムエラーにより、マクロ実行がBadEntryというラベルのステートメントにジャンプします。その結果、Excelの不公平なエラーメッセージは避けられ、独自のメッセージをユーザーに表示することができます。
<! - 3 - >
この例では、BadEntryラベルの直前にExit Subステートメントを使用しています。このステートメントは、エラーがない が発生した場合にエラー処理コードを実行したくないために必要です。