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