2014-01-07 146 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' :) –

相關問題