2014-01-07 149 views
1

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

Sub Search() 

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

End Sub 

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

回答

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 GAMESURNAME等。实例如"My Name is Sid""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"

下面是不同的场景的快照。

enter image description here

注意:如果你想使用.FIND然后看到THIS LINK。基于上述情况,你将有

  1. LookAt:=打这可能需要xlPartxlWhole作为它的参数之一。
  2. MatchCase:=它可以把TrueFalse作为它的一个参数。
+0

谢谢!这非常有帮助! – user3163920

2

这是否你想它?:

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

注意什么,是区分大小写的,看起来整个单元的内容,而不是小区内的字符串。

+1

+ 1。我认为用户实际上希望'ClearContents'而不是'Clear' :) –

相关问题