SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
SEの転職活動で使うべきサイト・エージェント 目指せ年収アップ
東南アジアをバックパッカーしながら転職活動をした記録
東南アジアをバックパッカーしながら転職活動をした記録
7年目で初の転職活動 2カ月で内定獲得した記録
7年目で初の転職活動 2カ月で内定獲得した記録
おすすめのプログラミングスクール めざせ就職・年収アップ!
おすすめのプログラミングスクール めざせ就職・年収アップ!
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
メンズクリア2年通い放題入会! その後のヒゲ状況(不定期更新)
ブログ開始3年が経った月収が1万超えてた!
ブログ開始3年が経った月収が1万超えてた!
プログラミング独学・スクール・就職(目次)
プログラミング独学・スクール・就職(目次)
previous arrowprevious arrow
next arrownext arrow
 
Shadow
VBA

VBAで例外をcatchする書き方

VBAでもユーザに利用してもらう場合などは、例外が発生しても落ちないように考慮が必要です。

そこで、簡易的に例外を捕まえてメッセージを表示するVBAを使っているので紹介します。

実際に作ったファイルはこちらから無料でダウンロードできます。

エクセルの仕様

仕様は、「あ、い、う、え、お」と本当は出力したいです。

ただ、一部存在しないシート名を指定していることで、例外が起こるようになっています。

マクロが無効にされる場合

ダウンロードすると、以下のような警告が表示されることがあります。

ファイルを右クリックして、プロパティから「許可する」にチェックを入れて下さい。

コードの解説

コード

'==============================
'目的       :
'==============================
Sub test_Click()

    '------エラー時はErrCatchラベルへ------
    On Error GoTo ErrCatch
    
    'ファイルパスの書き込みエリアをクリアする
    ThisWorkbook.Sheets("Sheet1").Columns("D").ClearContents
    
    'D1~5のセルに数字を記載する
    ThisWorkbook.Sheets("Sheet1").Range("D1") = "あ"
    ThisWorkbook.Sheets("Sheet1").Range("D2") = "い"
    ThisWorkbook.Sheets("Sheet1").Range("D3") = "う"
    ThisWorkbook.Sheets("Sheet20").Range("D4") = "え"    '存在しないシートを指定
    ThisWorkbook.Sheets("Sheet1").Range("D5") = "お"
    
    MsgBox "完了しました。"
    
'エラーキャッチ
ErrCatch:

    ' エラーの場合、エラーメッセージを表示する
    Call ShowErrMsg
    
End Sub

'==============================
'目的       :エラーの場合、エラーメッセージを表示する
'==============================
Public Sub ShowErrMsg()

    'エラーがあればメッセージ表示
    If Err.Number <> 0 Then
        MsgBox "想定外のエラーが発生しました。" & vbCrLf + _
                "エラー番号:" + CStr(Err.Number) & vbCrLf + _
                "エラーの種類:" + Err.Description
    End If

End Sub

解説

7行目で、例外があった場合、「ErrCatch」というラベルに移動するようになっています。

13行目~17行目で「あいうえお」と書き込むように書いています。

ただ、16行目は存在しないシート名「sheet20」が指定されているため例外が発生します。

32行目でエラー時のメソッドが記載してあります。

例外があった場合、Err.Numberが0以外となります。

0以外(エラーがあった)場合、エラー内容をメッセージ表示させています。

ABOUT ME
LooseCarrot
LooseCarrot
ブログ運営をしているLooseCarrotです。 興味のあることにトライして発信していきます! プロフィール

関連している記事