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