EOF関数とは、開かれているデータの末尾を調べる関数です
データベースではプロパティとして使用されます
データが末尾に到達した時点で「True」を返します
それ以外の時点では「False」を返します
主に使用するのは、テキストデータの読み取りや、データベースデータのレコードの最終データの判定に使用します
関数の書式
引数(太字は必須引数)
(Filenumber)
戻り値の型 Integer型(Boolean型)
引数「Filenumber」はOpenステートメントで開いたときのファイル番号です
プロパティでの使用時に引数はありません
実際の使用場面
今回はよく使用するテキストデータの末尾判定処理を行います
この画像のテキストデータを取得しながらEOF関数の動きを確認します
Sub 処理テスト() Open ThisWorkbook.Path & "\新しいテキスト ドキュメント.txt" For Input As #1 Do Until EOF(1) = True Debug.Print EOF(1) Line Input #1, 文字列変数 Debug.Print 文字列変数 Loop Debug.Print EOF(1) Close #1 End Sub
このコードが今回作成した処理です
内容としては、テキストデータをメモリ上に読み込みモードで開き
そのファイル番号をEOF関数で「True」が返されるまで取得し続けるループ処理です
画像の動きを確認してください
EOFがテキストデータの存在している場合には「False」が返されています
データが末尾に来た時点で「True」が返されてループが終了しています
この判定を行っていないと、データが存在しない状態で参照しようとしてエラーが発生します
また、ループ条件の1行に関して
Do Until EOF(1) = True
この部分に関しては、If関数と同様に比較を行わない方法でも構いません
Do Until EOF(1)
この様に、「=」以降は入力しなくても関数がTrueを返して条件が成り立つので必要はありません
ただ、それはある程度知識のある人が見てパッと分かるようなコーディングだと思いますのでIfステートメントにしても、自分は「= True」は省略しないようにしています
比較を行わないので、処理速度にも影響はあるようです
見やすさの方が重視するので、あまり気にしませんがねぇ
なお、テキストデータを一括で1つのデータで読み込む場合は
以下の方法も利用できます