如果单元格不是公式,如何执行替换?

时间:2016-02-14 00:42:46

标签: excel vba replace excel-formula

我想在包含大量excel文件的文件夹中进行批量替换。某些文件位于子文件夹中。但是,只有当我替换的单元格不是公式时,我才想要替换。我想我可以通过检查是否有" ="作为单元格的第一个字符,但我不知道如何编码它。到目前为止,我有这个:

Dim FileSystem As Object
Dim HostFolder As String

Sub Init()

HostFolder = "C:\Users\Felipe\Desktop\ReplaceTest\"

Set FileSystem = CreateObject("Scripting.FileSystemObject")
DoFolder FileSystem.GetFolder(HostFolder)

End Sub

Sub DoFolder(Folder)
    Dim SubFolder

    For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder
    Next

    Dim File

    For Each File In Folder.Files
        With Workbooks.Open(File)
            Dim worksheet As worksheet

            For Each worksheet In ActiveWorkbook.Worksheets
                'I don't want the line below to replace formulas
                ws.Cells.Replace What:="testA", Replacement:="testB", LookAt:=xlPart, SearchOrder _
                    :=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False
            Next worksheet

        End With
    Next
End Sub

它按原样运作,但它会取代公式,我不想要。

1 个答案:

答案 0 :(得分:3)

仅将替换限制为常量:

ws.Cells.SpecialCells(xlCellTypeConstants).Replace What:="testA", Replacement:="testB", LookAt:=xlPart, SearchOrder _
                    :=xlByRows, MatchCase:=True, SearchFormat:=False, ReplaceFormat:=False

修改#1:

为避免出现恼人的错误:

On Error Resume Next
Replace之前

并放置:

On Error Goto 0

Replace

之后