Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA.FindNext()-跳过下一个值_Vba_Excel_Macros - Fatal编程技术网

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

VBA.FindNext()-跳过下一个值,vba,excel,macros,Vba,Excel,Macros,我有一个电子表格,其中包含特定账户的总账信息,其结构如下: 我想设计一个简单的宏来找到包含“Total”的单元格并将其删除,然后移动到右边的一列,并将“Total:”放入单元格(b列) 我在宏中遇到的问题是,当我将其设置为.FindNext()时,它会拾取刚刚填充为下一个查找的“Total:”单元格。我知道我可能可以用if函数处理这个问题,但我想知道是否有任何方法可以使.FindNext()跳过下一个结果并相应地继续 以下是当前形式的宏。注意:这是我第一次尝试制作自己的VBA宏 Sub Mac

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

我想设计一个简单的宏来找到包含“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
Sub-Macro2()
带有工作表(“表3”)。单元格
设置c1=.Find(“总计”,后面为:=.Range(“A1”),LookIn:=xlValues)
如果不是,那么c1什么都不是
firstOne=c1.地址
做
c1.选择
ActiveCell.ClearContents
c1.偏移量(0,1)。Value=“总计:
集合c1=.FindNext(c1)
循环而不是c1为零,c1。地址为firstOne和c1。值为“总计”
如果结束
以
端接头

如果有人能帮助我跳过下一个值,或者正确地抵消它,这样我会非常感激。我也试图找到关于这个问题的其他帖子,但没有找到任何关于这个问题的帖子,我感谢你的帮助

将搜索范围限制为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
Sub-Macro2()
带有工作表(“表3”)。范围(“A:A”)
设置c1=.Find(“总计”,后面为:=.Range(“A1”),LookIn:=xlValues)
如果不是,那么c1什么都不是
firstOne=c1.地址
做
与c1
.ClearContents
.Offset(0,1)。Value=“总计:”
以
集合c1=.FindNext(c1)
循环而不是c1为零,c1。地址为firstOne和c1。值为“总计”
如果结束
以
端接头

将搜索范围限制在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
Sub-Macro2()
带有工作表(“表3”)。范围(“A:A”)
设置c1=.Find(“总计”,后面为:=.Range(“A1”),LookIn:=xlValues)
如果不是,那么c1什么都不是
firstOne=c1.地址
做
与c1
.ClearContents
.Offset(0,1)。Value=“总计:”
以
集合c1=.FindNext(c1)
循环而不是c1为零,c1。地址为firstOne和c1。值为“总计”
如果结束
以
端接头

If语句可能是您的最佳选择。但是,您可以尝试使用
set c1=.FindNext(c1.offset(0,1).Range)
来抵消下一次搜索的开始,以了解其工作原理。我无法确定
Find
算法是从左到右、从上到下还是从另一个方向工作。
if
语句可能是你最好的选择。但是,您可以尝试使用
set c1=.FindNext(c1.offset(0,1).Range)
来抵消下一次搜索的开始,以了解其工作原理。如果
Find
算法是从左到右、从上到下还是从另一个方向工作,我完全无法确定。这非常有效,谢谢你的提示!真不敢相信这么简单!这非常有效,谢谢你的提示!真不敢相信这么简单!