0

我正在以编程方式尝试模拟 excel“查找和替换”功能,对此我有一定的疑问/担忧。下面是我正在使用的代码,它是使用 excel 中的“记录宏”功能记录的。

 Selection.Replace What:=":Y", Replacement:="helloWorld", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

在上面的代码中,如果我将 helloWorld 替换为类似于 This is a "Chicken" 的代码,那么代码会因为“This is a "Chicken"”的情况而惨遭失败。为了纠正它,我们应该有类似“这是一只”“鸡”“”

但是,要替换的文本来自同一个 Excel 工作表中的单元格。如何在已经有引号的文本中添加额外的引号以避免任何错误。

像 $%^&*!@# 这样的特殊字符也是如此

请帮忙!

4

1 回答 1

1

如果替换文本来自另一个单元格的值,我根本不用担心进行字符串转换。我倾向于做的是将包含替换文本的单元格的 .Value 属性传递给 Replace 方法的 Replacement:= 参数。这样 Excel 将在内部处理所有引号和其他字符;你不必担心它。

像这样的东西:

Sub ReplaceText()

On Error Resume Next
    Err.Clear

    'Let's say that the replacement text is in A1
    Selection.Replace What:=":Y", Replacement:=ActiveSheet.Cells(1, 1).Value, LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    'In case it's something like an error in the replacement text cell.
    'Using quotes or special characters WON'T cause an error.
    If Err.Number <> 0 Then
        MsgBox "Replacement failed; error " & Err.Number & vbCrLf & Err.Description
    End If

On Error GoTo 0


End Sub
于 2012-10-22T11:02:20.330 回答