2016-11-08 573 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