VBA.FindNext()-跳过下一个值
我有一个电子表格,其中包含特定账户的总账信息,其结构如下: 我想设计一个简单的宏来找到包含“Total”的单元格并将其删除,然后移动到右边的一列,并将“Total:”放入单元格(b列) 我在宏中遇到的问题是,当我将其设置为.FindNext()时,它会拾取刚刚填充为下一个查找的“Total:”单元格。我知道我可能可以用if函数处理这个问题,但我想知道是否有任何方法可以使.FindNext()跳过下一个结果并相应地继续 以下是当前形式的宏。注意:这是我第一次尝试制作自己的VBA宏VBA.FindNext()-跳过下一个值,vba,excel,macros,Vba,Excel,Macros,我有一个电子表格,其中包含特定账户的总账信息,其结构如下: 我想设计一个简单的宏来找到包含“Total”的单元格并将其删除,然后移动到右边的一列,并将“Total:”放入单元格(b列) 我在宏中遇到的问题是,当我将其设置为.FindNext()时,它会拾取刚刚填充为下一个查找的“Total:”单元格。我知道我可能可以用if函数处理这个问题,但我想知道是否有任何方法可以使.FindNext()跳过下一个结果并相应地继续 以下是当前形式的宏。注意:这是我第一次尝试制作自己的VBA宏 Sub Mac
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
算法是从左到右、从上到下还是从另一个方向工作,我完全无法确定。这非常有效,谢谢你的提示!真不敢相信这么简单!这非常有效,谢谢你的提示!真不敢相信这么简单!