我正在尝试构建一个可为用户提供更多功能的插件。
这些函数的基础是搜索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
关于为什么这不起作用的任何想法?????
答案 0 :(得分:0)
在Visual Basic编辑器中,将ThisWorkbook的IsAddIn属性更改为False。激活工作簿并将要填充在Table_1ASpecList中的值输入到工作表中。给范围命名,说" MyValues"。将IsAddIn属性更改回True,然后将代码修改为:
Dim Table_1ASpecList() As Variant
Table_1ASpecList = Sheet1.Range("MyValues").Value