从整个工作簿而不是仅从当前工作表中查找并替换

时间:2020-05-25 05:18:04

标签: excel vba replace find

我正在尝试记录一个简单的宏,以在所有工作簿中找到<0.01和<0.1(匹配整个单元格内容),且值为0。当我运行宏时,它第一次起作用。当我重新加载工作表时,宏似乎默认情况下只是从当前工作表中查找/替换而忽略工作簿的其余部分。

任何人都可以帮忙。下面是简单的代码。

Sub Macro1()
'
' Macro1 Macro
'

'
    Cells.Replace What:="<0.01", Replacement:="0", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Cells.Replace What:="<0.1", Replacement:="0", LookAt:=xlWhole, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

1 个答案:

答案 0 :(得分:1)

问题在于用户界面可以区分...

  1. 替换当前工作表
  2. 替换整个工作簿

但是,如果您在这两种情况下都记录了宏,则代码看起来将完全相同。这意味着您无法通过代码正确反映这种差异。该代码将执行用户界面最后执行的操作。

唯一解决此问题的方法是遍历工作簿中的所有工作表,并在每个工作表中明确替换:

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    ws.Cells.Replace … 'your 1. replace code here

    ws.Cells.Replace … 'your 2. replace code here
Next ws