【问题标题】:EOF VBA blocks me from accessing last line of my fileEOF VBA 阻止我访问文件的最后一行
【发布时间】:2020-11-20 13:49:35
【问题描述】:

我正在尝试循环浏览一个文本文件。我对该文件的每一行进行具体检查,以了解它是否会被粘贴。我正在使用以下代码。但是使用 EOF 会阻止我访问最后一行,这有时很有用。

Dim buffer As String
Open file For Input As #1

Line Input #1, buffer
i = 1
j = 1

Do Until EOF(1) And i > coll(coll.Count)

    If i = coll(j) Then 
         ListSplit = Split(buffer, ",") 'Split the line with "," delimiter
         '...
         j=j+1
    End If

    Line Input #1, buffer
    i = i + 1

Loop 

Close #1

【问题讨论】:

  • 把测试放在循环的结尾而不是开始。
  • 我在最后加上:Do .... Loop until EOF(1) 但它看起来不起作用,我有同样的问题。
  • 如果 j>coll(coll.count) 应该是真的吗
  • 这部分可以去掉。即使仅对 EOF 进行测试,它也不起作用。不考虑最后一行。

标签: vba while-loop readfile eof do-loops


【解决方案1】:

这样构建你的逻辑:

   Open file For Input As #1
   
   Do
      Line Input #1, buffer
      Debug.Print buffer  'do your work
   Loop Until EOF(1)
   
   Close #1

您发布的代码的问题是读取最后一行,设置 EOF,然后循环。评估条件并退出循环。

【讨论】:

    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多