Excel 用InStr搜索双引号
我想查看字符串并检查它是否包含Excel 用InStr搜索双引号,excel,vba,Excel,Vba,我想查看字符串并检查它是否包含“ 我尝试了如果InStr(myString,“)>0,那么,但VBA在某个地方将其读取为缺少的“,并返回一个 编译错误。应为列表分隔符 如何搜索该字符?尝试使用Chr(34) MS Office有4种不同类型的双引号,包括简单的文本引号和花哨的“智能”引号,因此,如果您希望VBA代码能够始终如一地工作,您可能需要检查所有这些可能代表双引号的字符: If InStr(inputText, Chr(34)) > 0 Or InStr(inputText, Chr
“
我尝试了如果InStr(myString,“)>0,那么
,但VBA在某个地方将其读取为缺少的“
,并返回一个
编译错误。应为列表分隔符
如何搜索该字符?尝试使用Chr(34)
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
您可以使用Chr(34)侧注:为什么
而。Wend
?一个简单的替换就足够了(也可以通过Chr
分配给数组的值在循环中完成)。好的点T.M.I将更新
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