Arrays Excel VBA:数组中可以存储的最大字符串元素数是多少

Arrays Excel VBA:数组中可以存储的最大字符串元素数是多少,arrays,vba,excel,Arrays,Vba,Excel,我正在尝试构建一个插件,它将为用户提供更多的功能 这些函数的基础是搜索包含1424个字符串元素的相当大的数据集,并返回每个相同匹配的数组元素位置 我希望将数据集存储在VBA代码中,因为它永远不会更改,我不希望将其存储在电子表格中。在构建阵列时,我面临一个问题,即添加1278元素后,整个阵列将消失 直到第1277个元素,阵列才能工作并可以被查询。只要我再添加一个元素,整个数组就会消失!据我所知,我远远没有达到VBA中允许的最大数组元素数,因此由于其他一些问题,这是失败的 以下是我的代码片段: Fu

我正在尝试构建一个插件,它将为用户提供更多的功能

这些函数的基础是搜索包含1424个字符串元素的相当大的数据集,并返回每个相同匹配的数组元素位置

我希望将数据集存储在VBA代码中,因为它永远不会更改,我不希望将其存储在电子表格中。在构建阵列时,我面临一个问题,即添加1278元素后,整个阵列将消失

直到第1277个元素,阵列才能工作并可以被查询。只要我再添加一个元素,整个数组就会消失!据我所知,我远远没有达到VBA中允许的最大数组元素数,因此由于其他一些问题,这是失败的

以下是我的代码片段:

Function matsearch(ByVal MatSpec As Variant) As String

Dim i As Integer, InstanceCount As Integer, LastInstance As Integer, FirstInstance As Integer
Dim Table_1ASpecList() As String
InstanceCount = 0
LastInstance = 1

Table_1ASpecList = Array("Spec_No", "SA/AS 1548", "SA/AS 1548", "SA/CSA-G40.21", "SA/EN 10028-2", "SA/EN 10028-3", "SA/EN 10028-7", "*****Many More Elements*****")

For i = 0 To UBound(Table_1ASpecList)
    If MatSpec = Table_1ASpecList(i) Then
    InstanceCount = InstanceCount + 1
    LastInstance = i + 1
    End If
Next i
FirstInstance = LastInstance - InstanceCount
matsearch = FirstInstance & " " & InstanceCount

在Visual Basic编辑器中,如果您想知道这为什么不起作用,请将此工作簿的IsAddIn属性更改为False。激活工作簿,并在工作表中输入要在表1规格列表中填充的值。为范围指定一个名称,例如“MyValues”。将IsAddIn属性更改回True,然后将代码修改为:

Dim Table_1ASpecList() As Variant
Table_1ASpecList = Sheet1.Range("MyValues").Value

我已经很久没有做VBA工作了,但是如果将数组的大小调暗到1424,会发生什么呢?例如,将表1规格列表(1424)变暗为字符串这可能与VBA语句的最大长度有关吗?“1278”似乎是个有趣的数字。如果
数组
方法有一个限制,我希望限制是2的倍数。语句的长度是多少?@visibleman
myArray=Array(…)
包含一个隐式的
ReDim
。您不能预先调整数组的大小,也不能使用静态数组。@Mulldoctor:为什么不将列表存储在工作表中?如果您正在开发外接程序,则可以将列表存储在外接程序工作簿的工作表中,该工作表对用户是隐藏的。如果您创建一个简单的循环,为1500个项目的数组分配一个字符串,您可以看到这并不是数组本身的限制@TonyDallimore认为这是对单个VBA语句行长度的限制,这可能是正确的。