在单元格中查找string

我试图检查stringNAME是否存在于活动单元格中,如果存在,程序应忽略该单元格。 如果不存在,则该单元格的内容必须被删除。 这是我有的代码:

 Sub Search() Range("B3").Select If ActiveCell.Find(What:="NAME") = False Then ActiveCell.Clear End Sub 

我不明白为什么它不起作用。 正如你所看到的,我现在只是检查单元格B3。

这一切都取决于你想find什么样的比赛。 那么你想找什么? 一场完整的比赛? 部分匹配? 区分大小写的匹配?

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 GAMESURNAME等。 "My Name is Sid""What's in a NAMe""What's in a NAMe"将不匹配。

D) 部分匹配+不区分大小写

 If InStr(1, ActiveCell.Value, "NAME", vbTextCompare) = 0 Then ActiveCell.ClearContents 

在这种情况下,单元格值必须包含"NAME"Case不重要。 例如NAME GAMESURNAme"My Name is Sid""What's in a NAMe"等。

以下是不同场景的快照。

在这里输入图像说明

注意 :如果你想使用.FIND那么看看这个链接 。 基于上述情况,你将不得不玩

  1. LookAt:=可以将xlPartxlWhole作为它的一个参数。
  2. MatchCase:=可以将TrueFalse作为参数之一。

这是否做你想要的?

 Sub Search() Range("B3").Activate If ActiveCell.Value = "NAME" = False Then ActiveCell.Clear End Sub 

请注意,区分大小写并查找整个单元格的内容而不是单元格内的string。