VBAで文字列や数字が入力された場合に分岐する、あるいは対象のデータ型を知りたい場合などは、TypeName関数というものを使います。
TypeName関数の使い方
対象のデータ形式を判定
Typename(引数)
Typename(引数)
![typenamestring7](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring7.jpg)
TypeNameは、引数のデータ型を返す関数です。
たとえばMsgBox TypeName(ActiveCell.Value)というマクロを実行すると……。
たとえばMsgBox TypeName(ActiveCell.Value)というマクロを実行すると……。
![typenamestring8](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring8.jpg)
こんな感じで、選んでいるセルのデータ型が表示されます。
![typenamestring1](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring1.jpg)
少し手を加えて条件分岐してみましょう。A列を判定し、文字列であればB列にその旨表記するマクロを作ります。
![typenamestring2](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring2.jpg)
VBEを開き、For文の中でもしTypeName(Range(“A” & i).Value) = “String”であれば処理を行う、という式を入力します。
![typenamestring3](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring3.jpg)
処理の実行結果です。アルファベットや日本語はStringとして判定され、数字や日付は無視されました。
![typenamestring4](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring4.jpg)
なお、StringのSは大文字で書く必要があります。stringのように書いた場合は何も起こりません。
' vba
For i = 2 To 5
If TypeName(Range("A" & i).Value) = "String" Then
Range("B" & i).Value = "文字列です"
End If
Next
色々なデータ型の判定
![typenamestring5](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring5.jpg)
![typenamestring6](https://sunagitsune.com/wp-content/uploads/2020/04/typenamestring6.jpg)
実行結果です。
' 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
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
コメント