2010年6月1日火曜日

【Excel】変数の型を表示させる【VBA】

 前回と同じコードをサンプルに使うのも何なので、まずは2010年5月30日日曜日のフォルダ一覧を表示させるコードをファイル一覧を表示させるコードへ変更。
Sub MakeFileList()
    Set fs = CreateObject("Scripting.FileSystemObject").GetFolder("C:\").Files
    Dim x: ReDim x(fs.Count, 1)
    For Each f In fs
        x(i, 0) = f.Name
        i = i + 1
    Next
    Range("A1:A" & fs.Count) = x
End Sub
 一行目末尾を"SubFolders"から"Files"に変更するだけでOK。


 変数の型を知りたい場合は以下のようにデバッグ用のコードを追加する。
Sub MakeFileList()
    Set fs = CreateObject("Scripting.FileSystemObject").GetFolder("C:\").Files
    Dim x: ReDim x(fs.Count, 1)
    For Each f In fs
        x(i, 0) = f.Name
        i = i + 1
    
    tn = TypeName(f)        '<-- debug
    
    Next
    Range("A1:A" & fs.Count) = x
    
    MsgBox ("i  as " & TypeName(i) & vbCrLf & _
            "x  as " & TypeName(x) & vbCrLf & _
            "f  as " & TypeName(f) & vbCrLf & _
            "fs as " & TypeName(fs) & vbCrLf & _
            "---------------------" & vbCrLf & _
            "f  as " & tn & vbCrLf & _
            "tn as " & TypeName(tn) _
            )               '<-- debug
    
End Sub
 実行すると以下のようなメッセージが出ます。

 ループ文の外で型を調べているので、普通に書くと変数"f"の型が"Empty"と表示されてしまいます。

 なので、デバッグ用にあらたに変数"tn"を用意し、ループ文の中で"f"の型を調べて、"tn"に代入した上で表示させています。

 ついでに"tn"の型も調べてみたら、"String"でした。

 この事からTypeName()関数は、変数の型を"文字列"で返す事がわかります。

0 件のコメント:

コメントを投稿