如何将单引号添加到用作搜索的VBA字符串并替换公式中的字符串?

时间:2016-07-15 23:42:00

标签: string excel vba excel-vba

如何将单引号添加到用作搜索的VBA字符串并替换公式中的字符串?我有以下代码:

Dim sht1 As Worksheet
Dim fnd1 As Variant
Dim rplc1 As Variant
Dim fnd2 As Variant
Dim rplc2 As Variant

fnd1 = "Instructions!"
rplc1 = "Info!"
fnd2 = "#REF!$A$7:$F$2000"
rplc2 = "INDIRECT(CONCATENATE(" '","Info!G2","'","!a:f"),1)"- this is the issue line

For Each sht1 In ActiveWorkbook.Worksheets
sht1.Cells.replace What:=fnd1, Replacement:=rplc1, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False

sht1.Cells.replace What:=fnd2, Replacement:=rplc2, _
LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False

Next sht1

`

rplc2替换字符串不起作用,因为我无法获得引用另一个工作表所需的单引号作为替换字符串的一部分。我无法弄清楚如何在连接公式中添加工作表引用所需的单引号。我试过了:

rplc2 = "INDIRECT(CONCATENATE(char(34),"Info!G2",char(34),"!a:f"),1)"

但这也不起作用。我还尝试了其他几种方法,但我可以得到一个有效的组合。

2 个答案:

答案 0 :(得分:0)

你只能使用双引号中的转义特殊字符。 为了逃避双重报价你可以使用两个双引号或ChrW(34) 要逃避单引号你可以使用ChrW(39) 在上面的案例中

"间接("& ChrW(34)&"'"& ChrW(34)&",&# 34;& ChrW(34)&" Info!G2"& ChrW(34)&","& ChrW(34)&"& #39;"& ChrW(34)&","& ChrW(34)&"!a:f"& ChrW(34)& ;"),1)"

"间接(""'""""信息!G2"" ""'"""":F""),1)" '所有单身"需要加倍""

答案 1 :(得分:0)

字符串中的

”标记可能会造成混淆。在大多数情况下,当您想要单个“标记时,它会将方括号括起来,例如” test“。当您在字符串中输入正确的字符串时,它实际上看起来像这样:““ test”“,但是当使用字符串时,实际的字符串数据是:” test“,外面的”“标记将被剥去。