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

时间:2015-09-01 08:09:58

标签: arrays excel vba excel-vba

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

这些函数的基础是搜索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

关于为什么这不起作用的任何想法?????

1 个答案:

答案 0 :(得分:0)

在Visual Basic编辑器中,将ThisWorkbook的IsAddIn属性更改为False。激活工作簿并将要填充在Table_1ASpecList中的值输入到工作表中。给范围命名,说" MyValues"。将IsAddIn属性更改回True,然后将代码修改为:

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