我正在尝试检查字符串NAME
是否存在于活动单元格中,如果存在,则程序应忽略该单元格。如果不存在,则必须删除该单元格的内容。这是我的代码:
Sub Search()
Range("B3").Select
If ActiveCell.Find(What:="NAME") = False Then ActiveCell.Clear
End Sub
我不明白为什么它不起作用。如您所见,我现在只是检查B3单元格。
答案 0 :(得分:3)
这一切都取决于你想要找到的匹配类型。那么你想找到什么?完全匹配?部分匹配?区分大小写的匹配?
A)完全匹配+区分大小写
在这种情况下,单元格值必须只是"NAME"
。 " NaMe"
,"NAme"
,"name"
等实例将不会匹配。
If ActiveCell.Value <> "NAME" Then ActiveCell.ClearContents
B)完全匹配+不区分大小写
If UCase(ActiveCell.Value) <> "NAME" Then ActiveCell.ClearContents
或
If LCase(ActiveCell.Value) <> "name" Then ActiveCell.ClearContents
在这种情况下,单元格值必须为"NAME"
或"NaMe"
等。" NaMe"
,"Surname"
等实例不会匹配。
C)部分匹配+区分大小写
If InStr(1, ActiveCell.Value, "NAME") = 0 Then ActiveCell.ClearContents
在这种情况下,单元格值必须包含"NAME"
。例如NAME GAME
。 SURNAME
等"My Name is Sid"
,"What's in a NAMe"
等实例将无法匹配。
D)部分匹配+不区分大小写
If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents
在这种情况下,单元格值必须包含"NAME"
。 Case
并不重要。例如NAME GAME
,SURNAme
,"My Name is Sid"
,"What's in a NAMe"
等。
以下是不同情景的快照。
注意:如果您想使用.FIND
,请参阅THIS LINK。基于上述场景,您必须使用
LookAt:=
可以将xlPart
或xlWhole
作为其中一个参数。MatchCase:=
可以将True
或False
作为其中一个参数。答案 1 :(得分:2)
这是否符合您的要求?:
Sub Search()
Range("B3").Activate
If ActiveCell.Value = "NAME" = False Then ActiveCell.Clear
End Sub
注意,区分大小写并查找整个单元格的内容而不是单元格中的字符串。