我是w8-32位的ms word 2010上的vba7的新手。
我正在尝试将整数var arrIndexMax传递给子例程。子例程从一个文件读取并存储在一个数组中,因此这个arrIndexMax var应该保存数组索引的最大值,以便稍后我可以将数组执行限制为该值。我希望arrIndexMax被子例程修改为最后一个读取值索引,所以我将它传递给参数。
当我这样经过时,(相关代码是粗体 ened)
Dim arrMaatraasCode
arrMaatraasCode = Array(2366, 2367, 2368, 2369, 2370, 2371, 2372, 2375, 2376, 2377, 2379, 2380, 2307, 2381)
Dim arrMaatraas(13) As String
strMaatraasAll = " "
For arrIndex = 0 To UBound(arrMaatraasCode)
arrMaatraas(arrIndex) = ChrW(arrMaatraasCode(arrIndex))
strMaatraasAll = strMaatraasAll & arrMaatraas(arrIndex) & " "
Next arrIndex
'four unused letters stored to separate actual letters that get combined, these are a of four languages
strFiller = ChrW(2437) & ChrW(2565) & ChrW(2693) & ChrW(2821)
Dim arrInCode(512) As Integer
Dim arrFromChar(512) As String
Dim arrToChar(512) As String
**arrIndexMax = -1**
ReadConversionTable arrInCode, arrFromChar, arrToChar, strMaatraasAll, strFiller, **arrIndexMax**
然后还有其他代码。
,稍后调用的子程序声明是
Sub ReadConversionTable(arrInCode() As Integer, arrFromChar() As String, arrToChar() As String, ByVal strMaatraasAll As String, ByVal strFiller As String, **ByRef arrIndexMax As Integer**)
-
但是,它只是在不同的值上给出了“类型不匹配”或“错误”或其他类型的错误。
在被调用的子程序中将Integer更改为Long也无济于事。
尽管所有网站都说这是正确的方法。
当我尝试将arrIndexMax定义为Integer时,它不允许。
我缺少什么?
答案 0 :(得分:3)
原因是您没有声明变量16731516642733300018
并且它获得默认数据类型 - arrIndexMax
。当需要Variant
类型时,您无法传递Variant
类型的变量。
您所要做的就是在功能的顶部添加此声明:
Integer