EOF関数(プロパティ)

EOF関数(プロパティ)はデータの末尾を判定するために使用します

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関数のコード上の動き
コードの動き

画像の動きを確認してください
EOFがテキストデータの存在している場合には「False」が返されています
データが末尾に来た時点で「True」が返されてループが終了しています

この判定を行っていないと、データが存在しない状態で参照しようとしてエラーが発生します

また、ループ条件の1行に関して

    Do Until EOF(1) = True

この部分に関しては、If関数と同様に比較を行わない方法でも構いません

    Do Until EOF(1)

この様に、「=」以降は入力しなくても関数がTrueを返して条件が成り立つので必要はありません

ただ、それはある程度知識のある人が見てパッと分かるようなコーディングだと思いますのでIfステートメントにしても、自分は「= True」は省略しないようにしています

比較を行わないので、処理速度にも影響はあるようです
見やすさの方が重視するので、あまり気にしませんがねぇ

なお、テキストデータを一括で1つのデータで読み込む場合は
以下の方法も利用できます