2

我已经使用记录函数创建了这个宏代码。

Sub Macro1()
    Cells.Find(What:="Text to find", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=True, SearchFormat:=False).Activate
    Range("E5").Select
    ActiveCell.FormulaR1C1 = "text to enter"
    Range("D6").Select
    Cells.Find(What:="Text to find", After:=ActiveCell, LookIn:=xlFormulas, _
        LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=True, SearchFormat:=False).Activate
    Range("E9").Select
    ActiveCell.FormulaR1C1 = "text to enter"       
End Sub

我需要这个宏继续通过同一列,直到它找不到任何更多的搜索词实例,而不返回到列的顶部。

所以它从一列开始,每次它找到一个指定的单词时,它都会在 1 列中使用标签并粘贴到指定的单词中。

它继续在同一列中搜索指定的单词,直到它不从列的顶部开始就找不到它。

希望这有点道理。

4

2 回答 2

0

不确定我是否理解,但我认为您正在寻找的是:

For each cell in columns(4).cells
    If cell.value="Text to find" Then Cell.offset(0,1) = "Text to enter"
Next cell
于 2013-06-21T03:42:04.780 回答
0

您可以使用FindandFindNext快速执行此操作,即:

  • 在 D 列中搜索文本StrOld
  • 在 E 列中输入任何匹配项,其中包含文本StrIn

代码

Sub Recut()
Dim strAddress As String
Dim StrIn As String
Dim StrOut As String
Dim rng1 As Range
StrOld = "Old"
StrIn = "New"

Set rng1 = Range("D:D").Find(StrOld, , xlFormulas, xlWhole, , , True)

If Not rng1 Is Nothing Then
        strAddress = rng1.Address
        Do
            rng1.Offset(0, 1) = StrIn
            Set rng1 = Range("D:D").FindNext(rng1)
        Loop While Not rng1 Is Nothing And rng1.Address <> strAddress
End If
End Sub
于 2013-06-21T13:02:40.407 回答