当Cells.Find作为代码执行时,VBA通过工作表循环失败

时间:2015-08-14 16:24:05

标签: excel-vba vba excel

    Sub Macro1()

    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets

    Cells.Find(What:="abc", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
    , SearchFormat:=False).Activate
    ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
    ActiveCell.Value = "xyz"

    Next ws

    End Sub

我使用以下代码循环遍历Excel工作簿中的所有工作表。我想寻找" abc"在工作表中。如果我发现" abc"在特定的工作表上,我希望它下面的单元格的值设置为" xyz"。 如果" abc"在工作表1的单元格A2上找到,我希望单元格A3是" xyz"。同样,如果" abc"在Worksheet2的单元格B4上找到,我希望Cell B5是" xyz"。必须为整个工作簿执行此操作。但是,整个工作簿的循环不会发生,代码只是循环遍历工作表1。

1 个答案:

答案 0 :(得分:0)

For Each ws In ActiveWorkbook.Worksheets
    ws.Activate

Cells.Find(What:="abc", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
ActiveCell.Value = "xyz"

Next ws