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