我想查看一个字符串并检查它是否包含"
。
我尝试了If InStr(myString, """) > 0 Then
但是VBA在某处将其视为缺失的"
并返回给我
编译错误。预期列表分隔符
我该如何搜索该角色?
答案 0 :(得分:2)
尝试使用Chr(34)
If InStr(myString, Chr(34)) > 0 Then
答案 1 :(得分:1)
MS Office 有 4 种不同类型的双引号,包括简单的文本引号和花哨的“智能”引号,因此如果您希望 VBA 代码始终如一地工作,您可能需要检查所有这些可能代表的字符双引号:
If InStr(inputText, Chr(34)) > 0 Or InStr(inputText, Chr(147)) > 0 Or InStr(inputText, Chr(148)) > 0 Or InStr(inputText, Chr(132)) > 0 Then
MsgBox "Found double quotes"
Else
MsgBox "Did NOT find any double quotes."
End If
这里是一个例子,我用一个函数来用普通的纯文本引号替换任何特殊/花哨的引号:
Dim d1 As String
Dim d2 As String
Dim d3 As String
Dim d4 As String
Sub FixFormatting()
Dim inputText As String
Dim outputText As String
inputText = Range("A2").Text
d1 = Chr(34)
d2 = Chr(147)
d3 = Chr(148)
d4 = Chr(132)
If InStr(inputText, d2) > 0 Or InStr(inputText, d3) > 0 Or InStr(inputText, d4) > 0 Then
inputText = ReplaceFancyQuotes(inputText)
End If
outputText = inputText
Range("C2").Value = outputText
End Sub
Function ReplaceFancyQuotes(s As String) As String
s = Replace(s, d2, d1)
s = Replace(s, d3, d1)
s = Replace(s, d4, d1)
ReplaceFancyQuotes = s
End Function