vba - 将整数变量传递给子程序byref会导致类型不匹配

时间:2015-12-08 08:47:01

标签: vba ms-word

我是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时,它不允许。

我缺少什么?

1 个答案:

答案 0 :(得分:3)

原因是您没有声明变量16731516642733300018并且它获得默认数据类型 - arrIndexMax。当需要Variant类型时,您无法传递Variant类型的变量。

您所要做的就是在功能的顶部添加此声明:

Integer