匹配整个string,而不是包含string

我有一个macros循环通过列和删除我不想要的数组中的任何东西。 问题是我想保留包含“可删除的string”,但也包含其他信息的某些单元格。

EG:如果在我要删除的东西中有“VARO”。 我不想用“VARO – summary”删除单元格,我只想删除只包含“VARO”的单元格。 不知道如何改变我的代码来实现这一目标! 任何语法和效率的帮助将是伟大的,因为我还在学习:)

Dim tDelete As Variant Dim sKeep As String, x As Long Dim rngSearch As Range, c As Range Dim i As Long, j As Long tDelete = Array("ABEL", "VARO") Dim delCell As Boolean For x = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1 Set c = Range("A" & x).Cells delCell = False For j = LBound(tDelete) To UBound(tDelete) If InStr(c.value, tDelete(j)) Then delCell = True End If Next j If deleteCell Then c.EntireRow.Delete shift:=xlShiftUp Next x 

我的直觉是问题在于InStr函数,但我不知道如何改变这个!

编辑:思考使用StrComp,但不知道适当的语法。 所以在IF那我可以有

 If StrComp(c.value, tDelete(j))=0 Then 

你快到了! 如果你使用

 IF StrComp(c.value, dontDelete(j),vbtextcompare) = 0 Then 

这将find确切的单元格匹配!

 Sub check_this() Dim tDelete As Variant Dim sKeep As String, x As Long Dim rngSearch As Range, c As Range Dim i As Long, j As Long tDelete = Array("ABEL", "VARO") Dim delCell As Boolean For x = Range("A" & Rows.Count).End(xlUp).Row To 5 Step -1 Set c = Range("A" & x).Cells delCell = False For j = LBound(tDelete) To UBound(tDelete) If c.Value = tDelete(j) Then c.EntireRow.Delete shift:=xlShiftUp End If Next j Next x End Sub 

您也可以创build一个AND语句,使“Varo”为真,“Varo”(Varo后的空格)为False,然后删除。

相反,您可以检查string是否包含“Varo”,string的长度是否等于“Varo”的长度。如果这两种情况都为true,则删除。

编辑如何只是简单地写:

 If c.value = tDelete(j) Then ' delete the cell 

这testing它是完全匹配的,所以具有“VARO”的单元格将被删除,但包含“…. VARO …”的单元格不会被删除。