Вам не нужно использовать left()
с оператором like
([]
также не требуется).если вам нужно проверить, что строка начинается с определенного текста, тогда используйте "pattern*"
, если вам нужно проверить последние символы, используйте "*pattern"
, и если вы хотите проверить, что строка содержит определенный текст, используйте "*pattern*"
(или несколько"*pattern1*pattern2*pattern3*"
).Также обратите внимание, что like
является чувствительным к регистру оператором (для удаления чувствительности к регистру вы можете использовать Lcase()
, Ucase()
или Option Compare Text
).Ваш обновленный код ниже:
Sub test0()
Dim macRange As Range, macCell As Range
Set macRange = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each macCell In macRange
With macCell
If Not (.Value Like "SEP*" Or .Value Like "SIP*") And .Value <> "" Then
.Interior.ColorIndex = 6
End If
End With
Next macCell
End Sub
или как это:
Sub test1()
Dim macRange As Range, macCell As Range
Set macRange = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each macCell In macRange
With macCell
If .Value <> "" And Not "SEP|SIP" Like "*" & Left(.Value, 3) & "*" Then
.Interior.ColorIndex = 6
End If
End With
Next macCell
End Sub
дополнительные варианты:
с использованием select case ...
:
Option Compare Text 'if you need to remove case sensitivity
Sub test2()
Dim macRange As Range, macCell As Range
Set macRange = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each macCell In macRange
Select Case Left(macCell.Value, 3)
Case "SEP", "SIP", "" 'list values that should be ignored
Case Else: macCell.Interior.ColorIndex = 6
End Select
Next macCell
End Sub
используя словарь:
Sub test3()
Dim macRange As Range, macCell As Range, dic As Object
Set dic = CreateObject("Scripting.Dictionary")
dic.comparemode = vbTextCompare 'use in case when you need to remove case sensitivity for dictionary
dic.Add "SEP", ""
dic.Add "SIP", ""
dic.Add "", ""
Set macRange = Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
For Each macCell In macRange
If Not dic.exists(Left(macCell.Value, 3)) Then macCell.Interior.ColorIndex = 6
Next macCell
End Sub