「VBAでコードを書いていて、エラーでプログラムが止まった経験はありませんか?」
エラー処理をしっかり行えば、プログラムの信頼性が格段に向上します。この記事では、エラー処理の基礎から具体的な活用例まで、初心者でもすぐに使えるテクニックを解説します!
インプレス
				
									
						¥2,288						(2025/11/04 10:08時点 | Amazon調べ)
					
				
							1. VBAのエラーとは?
Excel VBAでエラーが発生すると、実行中のコードが強制的に停止します。たとえば、以下のような状況が考えられます:
- 存在しないセルを参照しようとした場合
 - 数値の計算でゼロ除算が発生した場合
 - ファイルの読み込みで失敗した場合
 
これらのエラーを適切に処理することで、コードが中断されることなく、より安定したプログラムを実行できます。
2. On Errorステートメントの基本
VBAでは、エラー処理に On Error ステートメントを使用します。以下が基本構文です:
| 
					 1  | 
						On Error Goto エラー処理ラベル  | 
					
簡単な例
| 
					 1 2 3 4 5 6 7 8 9  | 
						Sub SimpleErrorHandling()     On Error GoTo ErrorHandler ' エラー処理を設定     Dim x As Integer     x = 1 / 0 ' ゼロ除算エラーを発生させる     Exit Sub ErrorHandler:     MsgBox "エラーが発生しました: " & Err.Description, vbCritical, "エラー" End Sub  | 
					
このコードでは、ゼロ除算エラーが発生してもプログラムが停止せず、エラーメッセージを表示します。
3. On Errorの種類
- On Error Resume Next
エラーが発生してもその行をスキップして次の行を実行します。 
| 
					 1 2 3 4 5 6  | 
						Sub IgnoreErrors()     On Error Resume Next     Dim x As Integer     x = 1 / 0 ' エラーが無視される     MsgBox "エラーが無視されました", vbInformation End Sub  | 
					
ただし、この方法はエラーを無視するため、意図しない動作が起こる可能性があります。慎重に使用してください。
- On Error GoTo 0
エラー処理を無効にします。 
| 
					 1 2 3 4 5 6 7  | 
						Sub DisableErrorHandling()     On Error Resume Next     Dim x As Integer     x = 1 / 0 ' エラーが無視される     On Error GoTo 0     x = 1 / 0 ' 再びエラーが発生してプログラムが停止する End Sub  | 
					
4. 実用例:エラー処理の活用
1. ファイル操作でのエラー回避
指定したファイルが存在しない場合にエラーを回避する:
| 
					 1 2 3 4 5 6 7 8 9 10  | 
						Sub OpenFileSafely()     On Error GoTo ErrorHandler     Dim FilePath As String     FilePath = "C:\NonexistentFile.xlsx"     Workbooks.Open FilePath     Exit Sub ErrorHandler:     MsgBox "ファイルが見つかりませんでした: " & FilePath, vbExclamation, "エラー" End Sub  | 
					
2. データ入力時のエラー処理
ユーザーが無効なデータを入力した場合にエラーを処理する:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12  | 
						Sub ValidateUserInput()     On Error GoTo ErrorHandler     Dim UserInput As Integer     UserInput = InputBox("1~10の数値を入力してください")     If UserInput < 1 Or UserInput > 10 Then Err.Raise vbObjectError + 1, , "無効な入力値です"     MsgBox "入力値は " & UserInput, vbInformation     Exit Sub ErrorHandler:     MsgBox "エラー: " & Err.Description, vbCritical, "入力エラー" End Sub  | 
					
3. エラー発生回数をカウントする
複数の処理を実行しながらエラー発生回数を記録する:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15  | 
						Sub CountErrors()     Dim i As Integer, ErrorCount As Integer     On Error Resume Next ' エラーを無視して処理を続行     ErrorCount = 0     For i = 1 To 10         Cells(i, 1).Value = 1 / (i - 5) ' iが5のときゼロ除算エラー         If Err.Number <> 0 Then             ErrorCount = ErrorCount + 1             Err.Clear ' エラー情報をリセット         End If     Next i     MsgBox "エラー発生回数: " & ErrorCount, vbInformation, "結果" End Sub  | 
					
5. エラー処理をさらに効果的にするポイント
- エラー番号の確認
エラーごとに固有の番号を持っています。Err.Numberを使ってエラーの種類を判定できます。 - エラー情報を記録
エラーの詳細をログとして保存することで、後でトラブルシューティングが容易になります。 - 複数のエラー処理ラベルを使う
大規模なプログラムでは、処理ごとに異なるエラーラベルを設定すると便利です。 
まとめ
On Errorステートメントを活用すれば、エラーによるプログラムの停止を防ぎ、より信頼性の高いコードを書くことができます。この記事で紹介した基本と実例を参考にして、ぜひエラー処理をマスターしてください!
インプレス
				
									
						¥2,288						(2025/11/04 10:08時点 | Amazon調べ)
					
				
							
  
  
  
  
					




コメント