EOF関数

 VBAで使用できる関数です。
 ファイルをOpenステートメント(モードはRandomまたはInput)で開いているときに、読み込み位置が末尾にあるかどうかをブール型の値(TrueまたはFalse)で返します。

使用例

例1

 サンプルとして次のようなファイルを用います。
 ファイルのフルパスは「E:テストフォルダ¥test.txt」とします。

f:id:accs2014:20190213072219p:plain:left:w350

コード
 Openステートメントで上記ファイルを開き、ファイル番号は1(#1)としています。
 そしてLine Inputでファイルを1行ずつ読み込みMsgBoxで表示します。
 読み込み位置がファイル末尾に達しているかどうかをEOF関数で判定し、末尾に達したらループを抜けて終了します。EOF関数の引数はファイル番号(「#」なしの「1」)で指定します。ちなみにOpenもCloseも「#1」ではなく「1」と指定しても動きますが(Line Inputでは「#1」としないとエラー)ここでは区別のため統一しています。

Sub Func_EOF()

    Dim txt_line As String
    
    Open "E:テストフォルダ\test.txt" For Input As #1

    Do While Not EOF(1)
        Line Input #1, txt_line
        MsgBox txt_line
    Loop

    Close #1

End Sub

※¥がバックスラッシュとして表示されているかもしれません(以下同様)。

出力
 ダイアログが2回表示されて終了します。ファイルの行数が2行なのでコードのDo Whileループは2周して終了している、ということになります。
f:id:accs2014:20190213072216p:plain:left:w200f:id:accs2014:20190213072214p:plain:left:w200

例2

コード
 上記のファイルについて、各行の読み取りの前後にそれぞれEOF関数の値を表示します。

Sub Func_EOF()

    Dim txt_line As String
    
    Open "E:テストフォルダ\test.txt" For Input As #1

    Do While Not EOF(1)
        MsgBox "読み出し前EOF : " & EOF(1)
        Line Input #1, txt_line
        MsgBox "読み出し後EOF : " & EOF(1)
    Loop

    Close #1

End Sub

出力
 ダイアログが4回表示されます。
 左から順に、1行目読み込み前、1行目読み込み後、2行目読み込み前、2行目読み込み後の表示です。
 ファイルの2行目のテキストを読み込んだ時点でEOFの値がTrueになっていることがわかります。
f:id:accs2014:20190213072211p:plain:left:w160f:id:accs2014:20190213072208p:plain:left:w160f:id:accs2014:20190213072250p:plain:left:w160f:id:accs2014:20190213072247p:plain:left:w160

書式

EOF(ファイル番号)

 ファイル番号はOpenステートメントによりファイルを開く際に指定した番号です。
 ナンバーサイン(#)は不要です。

備考

 -