2016-11-08 574 views
0

我想在我的工作簿名稱中查找特定名稱。 這些名稱以「NameToFind」開頭,名稱的末尾是ID號碼。此代碼的最終目標是查找所有ID。 此代碼工作正常:VBA - 在ActiveWorkbook.Names中查找名字

For Each n In ActiveWorkbook.Names 
      If Left(n.Name, NameToFindLen) = NameToFind Then 
      (...) 
      end if 
next n 

但我有很多的名字和這個搜索是一個有點太長了......

能不能幫我優化thise代碼嗎?

+0

如果能正常工作,而你只是在尋求對改進建議,我建議,而不是張貼到[代碼審查(http://codereview.stackexchange.com/) – BruceWayne

+1

@BruceWayne這是相當粗短的代碼回顧一下,爲了適應它,需要大量額外的上下文。有關更多信息,請參閱[幫助中心](http://codereview.stackexchange.com/help/on-topic)。 – Mast

+0

您可以使用數組來代替。 – Niclas

回答

0

試試看看這種方法對你來說是否更快。 如果你想運行這個測試用例,添加一個命名範圍「name1」 然後運行測試---應該在直接窗口中顯示爲true。 如果你還沒有命名的範圍,應該顯示錯誤。

Option Explicit 

Function IsName(NameOfName) As Boolean 
    Dim check As Name 

    On Error Resume Next 
    Set check = ActiveWorkbook.Names(NameOfName) 
    On Error GoTo 0 

    If check Is Nothing Then 
     IsName = False 
    Else 
     IsName = True 
    End If 

End Function 

Sub TestIsName() 
    Dim test As Boolean 
    test = IsName("name1") 
    Debug.Print (test) 
End Sub