Vba 如何在excel宏中使用like查找列中的特殊字符

Vba 如何在excel宏中使用like查找列中的特殊字符,vba,excel,macros,Vba,Excel,Macros,在excel vba中搜索列中的特殊字符时遇到问题。 我使用了like运算符,如下所示: If Sheets("Eclipse Report").Cells(j, k).Value Like "*[%, !, *, ;, :, ~, °, ß, ö , ô, ó, ò, Ç, ü, é, â, ä , à, å, ç, ê, ë, è, ï, î, ì, æ, Æ, ô, ö, ò, û, ù, ÿ, ¢, £, ¥, ƒ, á, í, ó, ú, ñ, Ñ, °, o, ·, ², €, Ÿ,

在excel vba中搜索列中的特殊字符时遇到问题。 我使用了like运算符,如下所示:

If Sheets("Eclipse Report").Cells(j, k).Value Like "*[%, !, *, ;, :, ~, °, ß, ö , ô, ó, ò, Ç, ü, é, â, ä , à, å, ç, ê, ë, è, ï, î, ì, æ, Æ, ô, ö, ò, û, ù, ÿ, ¢, £, ¥, ƒ, á, í, ó, ú, ñ, Ñ, °, o, ·, ², €, Ÿ, ©, ®, À, Á, Â, Ã, Ä, Å, È, É, Ê, Ë, Ì, Í, Î, Ï, Ð, Ò, Ó, Ô, Õ, Ö, ×, Ø, Ù, Ú, Û, Ü, Ý, Þ, ã, ð, õ]*" Then    
    Sheets("Eclipse Report").Rows(j).Select
    'Sheets("Eclipse Report").Rows(j).Copy
    'Sheets("Sheet3").Select
    'Sheets("Sheet3").Paste
    Selection.Copy
    Sheets("Sheet3").Select
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 10
    ActiveWindow.ScrollColumn = 9
    ActiveWindow.ScrollColumn = 8
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Rows(j).Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-30
    Rows(j).Select
    ActiveSheet.Paste

    'Sheets("Sheet3").Select

    'Sheets("Sheet3").Paste
    'MsgBox ("special record found and pasted")

    Exit For
End If

代码找不到我期望的记录。

从字符列表中删除空格后,它通过了我的测试

Sub Test()
    Application.ScreenUpdating = False
    Dim j As Long, k As Long
    Dim r As Range
    With Sheets("EclipseReport")
        Set r = .Range("A1:O1")

        For j = 1 To 255
             r(j) = Chr(j)
        Next

        For j = 1 To 17
            For k = 1 To 15
                If .Cells(j, k).Value Like "*[%!*;:~°ßöôóòÇüéâäàåçêëèïîìæÆôöòûùÿ¢£¥ƒáíóúñÑ°o·²€Ÿ©®ÀÁÂÃÄÅÈÉÊËÌÍÎÏÐÒÓÔÕÖ×ØÙÚÛÜÝÞãðõ]*" Then
                    .Cells(j, k).Interior.ColorIndex = 6
                End If
            Next
        Next
    End With
    Application.ScreenUpdating = True
End Sub


更新:正如共产国际所说,逗号也不是必需的。

类似
的模式的问题在于括号内的字符列表没有分隔符。因此,要匹配
a
x
z
,您需要使用
[axz]
,而不是
[a,x,z]
。第二个模式将匹配
a
x
z
和空格

因此,您要寻找的模式是:

Like "*[%!*;:~°ßöôóòÇüéâäàåçêëèïîìæÆôöòûùÿ¢£¥ƒáíóúñÑ°o·²€Ÿ©®ÀÁÂÃÄÅÈÉÊËÌÍÎÏÐÒÓÔÕÖ×ØÙÚÛÜÝÞãðõ]*"
但是,请记住,
Like
对区域设置和文本比较选项敏感(请参阅)


个人而言,我会考虑使用VScript ReXEP,因为它们更容易使用,而且模式灵活。

嗨@托马斯,谢谢你的回答和善意的帮助。但我仍然没有得到正确的输出。没有任何特殊字符的单元格显示为黄色,这不是预期的输出。我的回答已经被接受了,但是我已经按照你说的从字符列表中删除了逗号。谢谢+1