
ExcelVBA 変数の型(データ型)を適切に設定することが重要。変数の型が期待されるものと違うと、「型が一致しません(エラー 13)」 が発生します。使い方や注意点など、サンプルコードをもとに具体的に解説します。
2025年の目標は繰り返し作業に悩まされない年にしませんか? Excel VBAを活用した効率化がその第一歩
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事
目次
Excel VBA 変数の型を調べる方法|シーン
以下のシーンで利用します。
1.ユーザー入力を数値型に変換する(例:"123" → 123)
2.オブジェクト型かどうかを判定する(例:セルのオブジェクト or 文字列)
3.エラーを回避するために、型をチェックして処理を分岐する。
Excel VBA 変数の型を調べる方法|サンプルコード
Excel VBAで効率化の準備をしてみませんか?2025年をよりスムーズに過ごすための資格
基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事
型を調べる
標準モジュール
Option Explicit
Sub 型チェック()
Dim testValue As Variant
testValue = "123" ' 文字列としての123
Debug.Print "VarType: " & VarType(testValue) ' 結果:8(文字列)
Debug.Print "TypeName: " & TypeName(testValue) ' 結果:"String"
If IsNumeric(testValue) Then
Debug.Print "これは数値として扱えます。"
Else
Debug.Print "これは数値ではありません。"
End If
End Sub
・VarType(testValue)は、数値(例:8)を返す。
・TypeName(testValue)は、人間が読める文字列(例:"String")を返す。
・IsNumeric(testValue)は、数値かどうかを判定する("123" は文字列でも数値として扱える)
型が一致しません(エラー 13)の原因と対策
標準モジュール(型が違うデータを代入したときに発生するエラー)
Option Explicit
Sub 型エラー()
Dim num As Integer
num = "abc" ' 文字列を数値型に代入 → エラー 13(型が一致しません)
End Sub
標準モジュール(エラー回避方法)
Option Explicit
Sub 型エラー回避()
Dim num As Integer
Dim inputValue As Variant
inputValue = "123" ' 文字列の123
If IsNumeric(inputValue) Then
num = CInt(inputValue) ' 数値に変換して代入
Debug.Print "変換成功:" & num
Else
Debug.Print "エラー:数値に変換できません"
End If
End Sub
・IsNumeric(変数)で 数値かどうか確認してから代入する。
・CInt(変数), CDbl(変数), CStr(変数)で 適切な型に変換する。
型を判定して処理を分岐する
標準モジュール(入力値の型に応じて処理を変える)
Option Explicit
Sub 型チェック_分岐()
Dim value As Variant
value = Date ' 今日の日付
Select Case VarType(value)
Case vbString
Debug.Print "文字列型です"
Case vbInteger, vbLong, vbDouble
Debug.Print "数値型です"
Case vbDate
Debug.Print "日付型です"
Case Else
Debug.Print "その他の型です"
End Select
End Sub
・VarType()を使うと、型ごとの判定ができる。
・Select Case を使うと、コードが読みやすくなる。
Excel VBA 変数の型を調べる方法|まとめ
・VBAでは変数の型を正しく扱うことが重要
・型を調べるには VarType()や TypeName()を使う。
・「型が一致しません」エラーは IsNumeric()などで事前チェックして防ぐ。
・数値変換には CInt(), CDbl(), CStr()を使う。
Excel VBAで自動化するコードのベースを習得したい方におすすめ!
VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。
ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。
ExcelVBAエキスパートスタンダード
ExcelVBAの開発を仕事にする人が対象の問題集です。
Excel VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。