この記事では、セルが指定されたデータ型(数値・日付・文字列など)になっているかどうかを、VBAを使って判定する方法を実際のVBAコードも含めて説明します。
Excelでも文字列と数値の四則演算はできないように、プログラミングの世界では、データの「型」という概念が、極めて重要な意味を持っています。
VBAを使ったExcel業務の自動化でも、一部、セルのデータ型を判定することが求められる場合がありますので、しっかりと学習しておきましょう。
セルのデータを判定する(数値)
この章では、ExcelのセルA1のデータが数値型かどうかを判定するVBAコードを紹介します。判定結果は変数「c」に格納し、最後にメッセージボックスで表示する処理も加えています。
基本構文
IsNumeric(Expression)
- IsNumeric= データが数値かを判定する関数
数値の場合Trueを返し、数値以外の場合Falseを返します - (Expression) = 判定対象のセル
この例では、A1です
判定結果の補足
IsNumeric関数では、数値の場合True、数値以外の場合はFalseを返します。(Boolean式といいます)
特殊な判定結果として、日付型はFalseを返しますが、時刻型ではTrueを返します。また、数式の場合には、数式の計算結果が数値の場合にのみTrueを返します。
Rangeプロパティ
Sub Sample()
Dim c As String
c = IsNumeric(Range(“A1”))
MsgBox c
End Sub
Cellsプロパティ
Sub Sample()
Dim c As String
c = IsNumeric(Cells( 1 , 1 ))
MsgBox c
End Sub
セルのデータを判定する(日付)
この章では、ExcelのセルA1のデータが日付型かどうかを判定するVBAコードを紹介します。判定結果は変数「c」に格納し、最後にメッセージボックスで表示する処理も加えています。
基本構文
IsDate(Expression)
- IsDate= データが数値かを判定する関数
日付の場合Trueを返し、日付以外の場合Falseを返します - (Expression) = 判定対象のセル
この例では、A1です
判定結果の補足
IsDate関数では、日付の場合True、日付以外の場合はFalseを返します。(Boolean式といいます)
なお、数式の場合には、数式の計算結果が日付の場合にのみTrueを返します。
Rangeプロパティ
Sub Sample()
Dim c As String
c = IsDate(Range(“A1”))
MsgBox c
End Sub
Cellsプロパティ
Sub Sample()
Dim c As String
c = IsDate(Cells( 1 , 1 ))
MsgBox c
End Sub
セルのデータを判定する(文字列)
この章では、ExcelのセルA1のデータが文字列かどうかを判定するVBAコードを紹介します。なお、前章までとは異なり、VBAでは文字列かどうかを判定する専用の関数はありません。
ここでは、汎用性のあるTypeName関数を使って、文字列かどうかを判定するVBAコードを紹介します。
判定結果は変数「c」に格納し、最後にメッセージボックスで表示する処理も加えています。
基本構文
TypeName(VarName)
- TypeName= データの形式を判定する関数
どんな値でも格納できます - (VarName) = バリアント型変数
この例では、Valueです
判定結果の補足
TypeName関数で返す判定結果は下記の通りです。
文字列 | String |
数値 | Double |
日付 | Date |
時刻 | Double |
数式 | Double |
(結果がエラーの)数式 | Error |
Rangeプロパティ
Sub Sample()
Dim c As String
c = TypeName(Range(“A1”).Value)
MsgBox c
End Sub
Cellsプロパティ
Sub Sample()
Dim c As String
c = IsData(Cells( 1 , 1 ).Value)
MsgBox c
End Sub