前回と同じコードをサンプルに使うのも何なので、まずは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 件のコメント:
コメントを投稿