首页 > 解决方案 > InStr : 跳过第一次获取

问题描述

我在 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 上的表格上

标签: vba

解决方案


添加一个计数器,然后检查计数器是否大于1

counter = 0
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   
                counter = counter + 1
                if counter > 1 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
            End If 
        Next SymbolName 
    End If
    Loop
Close #IndexFile
Next i

推荐阅读