Sub TEST1()
'文字列かの判定
Debug.Print WorksheetFunction.IsText("ABC") 'True
Debug.Print WorksheetFunction.IsText(123) 'False
Debug.Print WorksheetFunction.IsText("456") 'True
End Sub
実行すると、文字列の場合に「True」となります。
文字列の判定ができた
文字列かを判定できました。
TypeNameを使う
同じように「TypeName」を使って、文字列の判定をすることができます。
Sub TEST2()
'文字列かの判定
Debug.Print TypeName("ABC") = "String" 'True
Debug.Print TypeName(123) = "String" 'False
Debug.Print TypeName("456") = "String" 'True
End Sub
値の種類が、「"String"」の場合に「True」となります。
文字列の判定ができた
文字列かを判定できました。
文字列のみを取り出す
「TypeName」を使えば、文字列のみを取り出すことができます。
Sub TEST3()
Dim A
ReDim A(1 To 3)
A(1) = "ABC"
A(2) = 123
A(3) = "456"
'文字列だけを取り出す
For i = 1 To UBound(A)
If TypeName(A(i)) = "String" Then
Debug.Print A(i)
End If
Next
End Sub
では、実行してみます。
配列の値から、文字列のみを取り出せます。
文字列のみを取り出せた
配列の値から、文字列のみを取り出せました。
数値かを判定する
数値かを判定してみます。
IsNumber関数を使う
数値の判定は、WorksheetFunctionで、「IsNumber関数」を使うとできます。
Sub TEST4()
'数値かの判定
Debug.Print WorksheetFunction.IsNumber("ABC") 'False
Debug.Print WorksheetFunction.IsNumber(123) 'True
Debug.Print WorksheetFunction.IsNumber("456") 'False
End Sub
判定する値が、数値の場合に「True」となります。
数値の判定ができた
結果は、「123」のみが「True」となりました。
うまく数値の判定ができています。
数値のみを取り出す
「IsNumber関数」を使えば、数値のみを取り出すことができます。
Sub TEST5()
Dim A
ReDim A(1 To 3)
A(1) = "ABC"
A(2) = 123
A(3) = "456"
'数値だけを取り出す
For i = 1 To UBound(A)
If WorksheetFunction.IsNumber(A(i)) Then
Debug.Print A(i)
End If
Next
End Sub
では、実行してみます。
数値のみを取り出せた
数値の「123」のみを取り出せました。
数値文字列である「"456"」は取り出されません。
こんな感じで、うまく数値のみを取り出すことができました。
数値もしくは数値文字列を判定する
次は、数値もしくは数値文字列を判定してみます。
「123」や「"456"」を「True」として判定したい、ということになります。
IsNumericを使う
数値もしくは数値文字列の判定は、「IsNumeric」を使うとできます。
Sub TEST6()
'数値もしくは数値文字列の判定
Debug.Print IsNumeric("ABC") 'False
Debug.Print IsNumeric(123) 'True
Debug.Print IsNumeric("456") 'True
End Sub
実行してみます。
数値もしくは数値文字列の判定ができた
結果は、「123」と「"456"」が「True」となりました。
数値もしくは数値文字列であるかの判定ができています。
数値もしくは数値文字列のみを取り出す
「IsNumeric」を使って、数値もしくは数値文字列のみを取り出してみます。
Sub TEST7()
Dim A
ReDim A(1 To 3)
A(1) = "ABC"
A(2) = 123
A(3) = "456"
'数値もしくは数値文字列のみを取り出す
For i = 1 To UBound(A)
If IsNumeric(A(i)) Then
Debug.Print A(i)
End If
Next
End Sub
Sub TEST10()
'数式かの判定
Debug.Print Left(123, 1) = "=" 'False
Debug.Print Left("123", 1) = "=" 'False
Debug.Print Left("=123", 1) = "=" 'True
End Sub
では、VBAコードを実行してみます。
値で数式の判定ができた
結果は、「"=123"」のみが「True」となりました。
うまく数式かを判定できています。
数式のみを取り出す
「Left」を使って、数式のみを取り出してみます。
Sub TEST11()
Dim A
ReDim A(1 To 3)
A(1) = 123
A(2) = "123"
A(3) = "=123"
'数式のみを取り出す
For i = 1 To UBound(A)
If Left(A(i), 1) = "=" Then
Debug.Print A(i)
End If
Next
End Sub