Arrays 在代码内部创建引用表或数组

Arrays 在代码内部创建引用表或数组,arrays,excel,vba,reference,Arrays,Excel,Vba,Reference,我正在尝试创建一个函数,允许我输入一个位置号,结果将给我一个唯一的位置码。问题是我希望所有的引用都在宏代码内部完成,而不是从电子表格的某个地方获取信息。(此代码将进入外接程序,因此没有可从中引用的工作表)。我基本上想做一个vlookup,但是在代码内部,而不是在工作表中 我还没有找到如何做到这一点,下面的代码类似于我正在寻找的代码,我在考虑可能使用数组,但我不知道如何以我想要的方式使用它 我知道这不起作用,但我正在尝试下面这样做,这样当我键入=GetCode(415)时,结果是001 Fun

我正在尝试创建一个函数,允许我输入一个位置号,结果将给我一个唯一的位置码。问题是我希望所有的引用都在宏代码内部完成,而不是从电子表格的某个地方获取信息。(此代码将进入外接程序,因此没有可从中引用的工作表)。我基本上想做一个vlookup,但是在代码内部,而不是在工作表中

我还没有找到如何做到这一点,下面的代码类似于我正在寻找的代码,我在考虑可能使用数组,但我不知道如何以我想要的方式使用它

我知道这不起作用,但我正在尝试下面这样做,这样当我键入
=GetCode(415)
时,结果是
001

  Function GetCode(LocationNum As String) As String
  Dim Result As String

  'Built in reference table
  '
  '{   "415" : "001"
  '    "500" : "002"
  '    "605" : "003"
  '                   }

  Dim varData(2) As Variant
  varData("415") = "001"
  varData("500") = "002"
  varData("605") = "003"

  Result = varData(LocationNum)

  GetCode = Result

  End Function

正如Nathan_Sav已经提到的,您可以使用一个集合或字典来代替,这更有效。下面是一个使用dictionary对象的示例。请注意,它使用早期绑定,因此您需要设置对Microsoft脚本运行时库的引用
(Visual Basic编辑器>>工具>>参考)


正如Nathan_Sav已经提到的,您可以使用一个集合或字典来代替,这更有效。下面是一个使用dictionary对象的示例。请注意,它使用早期绑定,因此您需要设置对Microsoft脚本运行时库的引用
(Visual Basic编辑器>>工具>>参考)


看看集合和/或字典,它们更适合您的代码。不了解该代码如何将
LocationNum
用作参数和变量。查看集合和/或字典,它们将更适合您的代码。不了解该代码如何将
LocationNum
作为参数和变量使用。
Option Explicit

Sub test()

    'set a reference (VBE >> Tools >> Reference) to the Microsoft Scripting Runtime library

    'declare and create an instance of the dictionary object
    Dim dic As Scripting.Dictionary
    Set dic = New Scripting.Dictionary

    'set the comparison mode for the dictionary to a case-insensitive match
    dic.CompareMode = TextCompare

    'add keys and associated items to the dictionary
    dic.Add Key:="415", Item:="001"
    dic.Add Key:="500", Item:="002"
    dic.Add Key:="605", Item:="003"

    'print to the immediate window the item associated with the specified key
    Debug.Print dic("415")

    'clear from memory
    Set dic = Nothing

End Sub