创建重复的excel宏代码,直到不再提及文本为止

时间:2013-06-20 08:13:16

标签: excel excel-vba vba

我使用记录功能创建了这个宏代码。

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列中标记并粘贴到指定的单词中。

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

希望这有点道理。

2 个答案:

答案 0 :(得分:0)

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

For each cell in columns(4).cells
    If cell.value="Text to find" Then Cell.offset(0,1) = "Text to enter"
Next cell

答案 1 :(得分:0)

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

  • 在{D}栏中搜索StrOld
  • 中的文字
  • 使用StrIn
  • 中的文字在E列中输入任何匹配项

<强>码

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