【VBA道場】#21 データの型を判定する

ExcelVBA

【VBA道場】#21 データの型を判定する



問題

A1~A5のデータ型をB1~B5に表示せよ。

 

完成見本

解答

Sub vba_doujyou_21()

    '繰り返しで使用する変数iを定義
    Dim i As Long
   
    '1から5まで繰り返す
    For i = 1 To 5

        'B列にA列のデータ型を入力する
        Cells(i, 2) = TypeName(Cells(i, 1).Value)

    Next i

End Sub

サンプルファイル(マクロ無)

マクロなしのファイルはこちらからご利用いただけます。

 

サンプルファイル(マクロ有)

今回のマクロはこちらからダウンロードしてご使用いただけます。

 

解説

TypeName(調べたい対象):対象のデータ形式を調べる

 

前回まで、「セルが数値かどうか」「セルが日付かどうか」について調べていきました。

 

セルが数値かどうかを判断するときには「IsNumeric」、日付かどうかを判断するときには「IsDate」を使いましたね。

では文字列を判定したい時はどうすればいいでしょうか?
「IsString」でしょうか?

残念ながらVBAに「IsString」という関数はありません。

 

そこで出てくるのが「TypeName」関数です。

 

「TypeName」関数は、どんな値でも格納できるバリアント型変数に現在格納されているデータの形式を調べる関数です。

この「TypeName」関数にセルの値を渡すと、その形式を判別することが可能です。

 

ではコードを見ていきましょう。

 

今回は、下記のコードでB列にA列のデータ型を入力させました。

Cells(i, 2) = TypeName(Cells(i, 1).Value)

 

今回は5行あるので、5回繰り返します。

   '1から5まで繰り返す
    For i = 1 To 5

        'B列にA列のデータ型を入力する
        Cells(i, 2) = TypeName(Cells(i, 1).Value)

    Next i

では次に実行結果を見ていきましょう。

1行目は文字列なので「String」が表示されていますね。

同様に、数字は「Double」、日付は「Date」、True/Falseには「Boolean」、時刻も「Double」と表示されています。

 

型一覧は以下の通りとなっています。

型名 型指定文字 格納できるデータ
ブール型 Boolean TrueまたはFalse
バイト型 Byte 0~255までの整数
整数型 Integer -32,768~32,767の整数
長整数型 Long -2,147,483,648~2,147,483,647の整数
通貨型 Currency -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807の固定小数点数
単精度浮動小数点数型 Single 負の値:約-3.4×10(38乗)~-1.4×10(-45乗)正の値:約1.4×10(-45乗)~1.8×10(38乗)
倍精度浮動小数点数型 Double 負の値:約-1.8×10(308乗)~-4.0×10(-324乗)正の値:約4.9×10(-324乗)~1.8×10(308乗)
日付型 Date 日付:西暦100年1月1日~西暦9999年12月31日時刻:0:00:00 ~ 23:59:59
文字列型 String 任意の長さの文字列
オブジェクト型 Object オブジェクト
バリアント型 Variant すべてのデータ

時刻は「Double」型であることに注意しましょう。

 

おわりに

今日はデータの型を判定しました。
型名の判定をできるようになると入力チェックなどができるようになります。

是非活用しましょう!

今日はここまで。

 

おすすめ参考書

Amazon

たった1秒で仕事が片付くExcel自動化の教科書

いちばんやさしいExcelVBAの教本

ExcelVBA逆引き辞典 パーフェクト

楽天

いちばんやさしいExcelVBA

 

 

すらすら読めるExcelVBA

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

スラスラ読めるExcel VBAふりがなプログラミング [ リブロワークス ]
価格:2035円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

 

VBA逆引き大辞典

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Excel VBA逆引き辞典パーフェクト第3版 [ 田中亨 ]
価格:2838円(税込、送料無料) (2021/4/22時点)

楽天で購入

 

 

タイトルとURLをコピーしました