当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2015年1月21日水曜日

変数のデータ型を調べる

こんにちは。今朝(2015/01/21)は東京でもちょっとだけ雪が舞ってました。
私は寒いのが(暑いのも)苦手なので、雪は辛いです。ホント勘弁してほしいです。

そうは言っても天候ばかりはどうしようもありません。ここはおとなしく、「早く春が来ますように・・・」とお祈りするばかりです。

では、お祈りしつつ、今日も
にほんブログ村 IT技術ブログへ
をクリックしてください。



さて、今日の話題です。
昨日、Variant型の変数について記事を書いた(「Variant型データの初期値って?」参照)ので、それに関連したものです。

Variant型変数の初期値はEMPTYという特殊な値であるということは分かったことです。また、色々なデータ型になりうるというのも分かったかと思います。

では、実際にどんなデータ型になっているのかを調べる方法はあるのでしょうか?
それにはDatatype関数もしくはTypename関数で調べることはできます。
2つの関数の違いは戻り値が数値か文字列かどうかということです。

サンプルコードを載せるので具体的にみていきましょう。
Sub Click(Source As Button)
    Dim a As Integer
    Dim b As Double
    Dim c As String
    Dim d As Variant
   
    Msgbox _
    "変数aの値=[" & a & "] Datatype=[" & Datatype(a) & "] Typename=[" & Typename(a) & "]" & Chr$(10) & _
    "変数bの値=[" & b & "] Datatype=[" & Datatype(b) & "] Typename=[" & Typename(b) & "]" & Chr$(10) & _
    "変数cの値=[" & c & "] Datatype=[" & Datatype(c) & "] Typename=[" & Typename(c) & "]" & Chr$(10) & _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【DataTypeでデータ型を知る】"
   
    'Variant型の変数に文字列を代入したらどうなる?
    d = "aaa"
    Msgbox _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【変数d(Variant型)のデータ型を確認する】"
   
    'Variant型の変数に数値を代入したらどうなる?
    d = 1
    Msgbox _
    "変数dの値=[" & d & "] Datatype=[" & Datatype(d) & "] Typename=[" & Typename(d) & "]", _
    0 + 64, "【変数d(Variant型)のデータ型を確認する】"
End Sub

これを実行した結果が下の図です。
サンプルの実行結果

Integer、Double、String型の変数については、初期値の段階でそれぞれのデータ型を表す結果が返ってきています。
ですが、Variant型の変数についてはEMPTYという結果が返ってきています。
EMPTYはVariant型の変数だけがとりうる値だということはわかっていましたが、データ型の結果としても用いられるんですね。

さらに、Variant型の変数に文字列や数値を代入した後に実行したのが2番目と3番目のダイアログボックスです。
戻り値がSTRING、INTEGERとなっているのが分かりますね。
つまり、Variant型は代入されている値によってデータ型が変わるという事なのです。


プログラム内でVariant型に値を代入したのはいいけど、どんな風に取り扱われるのかわからないとか、データ型によって処理を変更したい(エラーチェックなんかも)という時に、この関数が使えるのではないでしょうか?



こういう使い方を覚えておくと、Variant型もより一層便利に使えるようになるのではないでしょうか。
では、今日はこの辺で・・・



【PR】ノーツ/ドミノに関するお問い合わせは下記まで【PR】
単純なDBのカスタマイズから他アプリケーションとの連携までご要望にお応えします!
Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ


0 件のコメント: