VBA .FindNext() - 跳过下一个值

时间:2016-04-20 17:15:59

标签: vba excel-vba macros excel

我有一个电子表格,其中包含特定帐户的总帐信息,其结构如下:

Data Structure

我想设计一个简单的宏来查找包含" Total"并删除它,然后移动到右边的一列并放入" Total:"在单元格中(b栏)。

我遇到的问题是,当我将它设置为.FindNext()时,它会选择" Total:"刚刚填充的单元格作为下一个查找。我知道我可以使用if函数来处理这个问题,但我想知道是否有任何方法可以使.FindNext()跳过下一个结果并继续相应的进行。

这是当前形式的宏。注意:这是我第一次尝试制作自己的VBA宏。

Sub Macro2()

    With Worksheets("Sheet3").Cells
        Set c1 = .Find("TOTAL", After:=.Range("A1"), LookIn:=xlValues)
            If Not c1 Is Nothing Then
        firstOne = c1.Address
        Do
            c1.Select
            ActiveCell.ClearContents
            c1.Offset(0, 1).Value = "Totals:"
            Set c1 = .FindNext(c1)

        Loop While Not c1 Is Nothing And c1.Address <> firstOne And c1.Value <> "Grand Total"
            End If
    End With
End Sub

如果有人可以协助我让它跳过下一个值或正确抵消它以便产生预期的效果我会非常感激。我也尝试在此找到其他帖子,但没有找到具体的这个问题,我感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

将搜索范围限制为仅限A列:

Sub Macro2()

    With Worksheets("Sheet3").Range("A:A")
        Set c1 = .Find("TOTAL", After:=.Range("A1"), LookIn:=xlValues)
            If Not c1 Is Nothing Then
                firstOne = c1.Address
                Do
                    With c1
                        .ClearContents
                        .Offset(0, 1).Value = "Totals:"
                    End With
                    Set c1 = .FindNext(c1)

                Loop While Not c1 Is Nothing And c1.Address <> firstOne And c1.Value <> "Grand Total"
            End If
    End With
End Sub