VBAで文字列や数字が入力された場合に分岐する、あるいは対象のデータ型を知りたい場合などは、TypeName関数というものを使います。
TypeName関数の使い方
対象のデータ形式を判定
Typename(引数)
Typename(引数)
TypeNameは、引数のデータ型を返す関数です。
たとえばMsgBox TypeName(ActiveCell.Value)というマクロを実行すると……。
たとえばMsgBox TypeName(ActiveCell.Value)というマクロを実行すると……。
こんな感じで、選んでいるセルのデータ型が表示されます。
少し手を加えて条件分岐してみましょう。A列を判定し、文字列であればB列にその旨表記するマクロを作ります。
VBEを開き、For文の中でもしTypeName(Range(“A” & i).Value) = “String”であれば処理を行う、という式を入力します。
処理の実行結果です。アルファベットや日本語はStringとして判定され、数字や日付は無視されました。
なお、StringのSは大文字で書く必要があります。stringのように書いた場合は何も起こりません。
' vba
For i = 2 To 5
If TypeName(Range("A" & i).Value) = "String" Then
Range("B" & i).Value = "文字列です"
End If
Next
色々なデータ型の判定
実行結果です。
' vba
For i = 2 To 5
Select Case TypeName(Range("A" & i).Value)
Case "String"
Range("B" & i).Value = "文字列です"
Case "Double"
Range("B" & i).Value = "数値です"
Case "Date"
Range("B" & i).Value = "日付です"
Case "Error"
Range("B" & i).Value = "エラーです"
End Select
Next
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント