【发布时间】:2019-06-24 19:26:57
【问题描述】:
我正在使用 VBA 并使用 InStr 检查我的文件 .txt 中是否有一些模式,但我不关心我在所有文件中获得的第一个模式。我怎样才能在我得到的第一个循环中跳过所有循环。
在条目中,我有一个包含一些 .txt 文件的文件夹(包含 2000/9000 行),我有一个符号名称列表,我需要检查每个文件中是否有每个符号以及每个文件有多少个符号.这一步现在完成了,但符号文件中的第一次出现我并不感兴趣,因为它只是声明了符号,但它不是符号。因此,要计算 this.txt 文件中此类符号的数量,我必须删除我得到的第一个符号
For i = 2 To Filepath_size
Open Filepath(i) For Input As #IndexFile
Debug.Print "Open file: "; Filepath(i)
Do While Not EOF(IndexFile)
Line Input #IndexFile, LineContent
If (InStr(LineContent, LinePrefix)) Then
For Each SymbolName In rngSymbo
If (InStr(LineContent, SymbolName)) Then
Set SymbolLineIndex = Range("A:A").Find(SymbolName, lookat:=xlWhole)
Cells(SymbolLineIndex.Row, i + 1).Interior.ColorIndex = 4
Cells(SymbolLineIndex.Row, i + 1).Value = Cells(SymbolLineIndex.Row, i + 1).Value + 1
Cells(SymbolLineIndex.Row, i + 1).Font.Size = 20
End If
Next SymbolName
End If
Loop
Close #IndexFile
Next i
我一周前开始使用 VBA,所以我完全不知道这是否可能,但可以跳过 InStr 发现的符号的第一次出现。目前,我的代码每次遇到符号时都会算我一次,也就是说一次比必要的次数太多,并将其显示在我的 sheet1 上的表格上
【问题讨论】:
-
在关于使用计数器的答案之后发布...这里的另一个选项是定义您的 rngSymbo 使用
.Find()来确定第一个实例并使用低于该值的范围。 -
感谢 Cyril 对您的评论,但我不知道我是否能够很好地理解您,我需要整个范围的 rngSymbo。我用 rngSymbo 符号一一检查了我的一百个 .txt 文件,以查看它是否存在于此文本文件中,以及它存在于此文件中的次数。目前我的代码返回我这样的符号存在 25 次,它应该跳过它在 .txt 文件中第一次遇到这个符号并发送给我 24。
标签: vba