我如何将VBA过程放入循环?

编辑:我想通了,感谢有用的职位。 我的最终代码如下。

我正在使用Excel,而且我有这个VBA脚本查找string,复制它,然后将其粘贴两个单元格。 我想要做的是整个过程重复的过程,直到它到达最后一次发生。

有人可以帮我把这个成一个循环或类似的东西?

Sub PasteOffset() Dim rng1 As Range Dim strSearch As String strSearch = "Transaction Number*" Set rng1 = Range("A:A").Find(strSearch, , xlValues, xlWhole) If Not rng1 Is Nothing Then rng1.Select rng1.Copy rng1.Offset(2, 0).PasteSpecial Else MsgBox "all done" End If End Sub 

这工作:

 Sub PasteOffset() Dim rng1 As Range Dim strSearch As String strSearch = "Transaction Number*" For CellNumber = 355 To 1 Step -1 Set rng1 = Range("A" & CellNumber) If rng1.Value Like strSearch Then rng1.Select rng1.Copy rng1.Offset(2, 0).PasteSpecial End If Next CellNumber End Sub 

像这样的东西? :

 Sub PasteOffset() Dim rng1 As Range Dim strSearch As String strSearch = "Transaction Number*" For CellNumber = 300 to 1 Step -1 'Write the end number here (instead of 300) Set rng1 = Range("A" & CellNumber ) If rng1.Value = strSearch Then rng1.Select rng1.Copy rng1.Offset(2, 0).PasteSpecial End If Next CellNumber End Sub 

试试这个:

 Sub tgr() Dim rngFound As Range Dim rngAll As Range Dim AllCell As Range Dim strSearch As String Dim strFirst As String strSearch = "Transaction Number*" Set rngFound = Columns("A").Find(strSearch, Cells(Rows.Count, "A"), xlValues, xlWhole) If Not rngFound Is Nothing Then Set rngAll = rngFound strFirst = rngFound.Address Do Set rngAll = Union(rngAll, rngFound) Set rngFound = Columns("A").Find(strSearch, rngFound, xlValues, xlWhole) Loop While rngFound.Address <> strFirst For Each AllCell In rngAll.Cells AllCell.Copy AllCell.Offset(2).PasteSpecial Next AllCell Application.CutCopyMode = False End If End Sub