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