VBAで自動化 VBA一覧 エラー対策

【VBA】「型が一致しません」エラーに対処する方法

Excel VBAは、Excelの機能を拡張するための強力なツールですが、時折「型が一致しません」というエラーに遭遇することがあります。エラーが発生する原因とその対処方法について説明します。

「型が一致しません」エラーの概要

「型が一致しません」エラー(エラーコード 13)は、VBAが変数や値のデータ型を一致させることができない場合に発生します。
例えば、文字列型の変数に数値型の値を代入しようとしたり、その逆を行ったりする場合にこのエラーが発生します。

「エラーコード 13:型が一致しません」エラーの発生例

セルA1の値を数値型の変数に代入しようとして「型が一致しません」エラーが発生するケースです。
セルA1の値が文字列(例:文字)であれば、このコードは「型が一致しません」エラーを引き起こします。

Sub TypeMismatchErrorExample()

Dim numericValue As Long

' セルA1の値を数値型の変数に代入
numericValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value

End Sub

エラーの原因と対策

・1.データ型の確認

セルの値が予期したデータ型であるかを確認することが重要です。
以下のコードは、セルA1の値が数値かどうかを確認する方法です。

Sub CheckDataType()

Dim cellValue As Variant

' セルA1の値を取得
cellValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value

' 値が数値かどうかを確認
If IsNumeric(cellValue) Then

MsgBox "セルA1の値は数値です。"

Else

MsgBox "セルA1の値は数値ではありません。"

End If

End Sub

・2.型変換を使用する

必要に応じて、適切な型変換を使用することでエラーを回避できます。以下のコードは、セルA1の値を文字列型に変換してから代入する方法です。

Sub ConvertDataType()

Dim stringValue As String

' セルA1の値を文字列型に変換して代入
stringValue = CStr(ThisWorkbook.Sheets("Sheet1").Range("A1").Value)

' 結果をデバッグウィンドウに出力
Debug.Print stringValue

End Sub

数値型に変換する場合は、CInt(整数型)やCDbl(倍精度浮動小数点型)などの関数を使用します。

Sub ConvertToNumber()

Dim numericValue As Double

' セルA1の値を数値型に変換して代入
numericValue = CDbl(ThisWorkbook.Sheets("Sheet1").Range("A1").Value)

' 結果をデバッグウィンドウに出力
Debug.Print numericValue

End Sub

【VBA】変数を文字列型・整数型・小数点型への型変換関数の使用方法

・3. エラーハンドリングを追加する

エラーハンドリングを追加して、エラーが発生した場合の処理を行うことも有効です。以下のコードは、エラーハンドリングを使用して「型が一致しません」エラーをキャッチし、適切なメッセージを表示します。

Sub HandleTypeMismatchError()

On Error GoTo ErrorHandler

Dim numericValue As Long

' セルA1の値を数値型の変数に代入
numericValue = ThisWorkbook.Sheets("Sheet1").Range("A1").Value

' 結果をデバッグウィンドウに出力
Debug.Print numericValue
Exit Sub

ErrorHandler:

If Err.Number = 13 Then

MsgBox "型が一致しません。セルの値が数値であることを確認してください。"

Else

MsgBox "エラーが発生しました。エラー番号:" & Err.Number

End If

End Sub

 

【VBA】GoToステートメントの理解と使用方法

【VBA】エラーハンドリングとオープンエラーハンドリング

まとめ

「型が一致しません」エラーは、Excel VBAでよく発生するエラーの一つです。このエラーを回避するためには、データ型を確認し、適切な型変換を行い、必要に応じてエラーハンドリングを追加することが重要です。これらの対策を講じることで、スムーズなVBAプログラミングが可能になります。

-VBAで自動化, VBA一覧, エラー対策