4
    myArray = Array("A", "B", "C", "D", "E")

    Call someSub(myArray)

...

    Sub someSub(ByRef myArray() as String) 'Error here
       'contents here
    End Sub

第二部分的类型不匹配错误——是什么原因造成的?

4

3 回答 3

9

您是否有任何机会忽略使用Option Explicit然后继续不指定 myArray 的类型?这将使它成为一个变体,你说as String这确实是一个类型不匹配。

于 2012-12-06T18:06:14.377 回答
6

想通了-必须将其作为普通变体传递

Sub someSub(myArray as Variant)
于 2012-12-06T18:07:39.197 回答
1

真的应该使用选项显式,然后将所有变量定义为特定类型。在这种情况下:

Option Explicit

Dim myArray(1 to 10) as String 'define the number of elements before you use it.
myArray(1) = 'A'
myArray(2) = 'B'
[etc etc]

它有点长,但是类型安全会让你的代码运行得更快,并且更容易阅读。它还可以防止您遇到的错误...

于 2012-12-06T18:58:32.037 回答