Excel VBA:传递数组时types不匹配

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

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

在第二部分input不匹配错误 – 是什么原因造成的?

你有没有机会省略使用Option Explicit ,然后继续不指定myArray的types? 这将使它成为一个变体,你说的as String ,这确实是一个types不匹配。

想通了 – 不得不通过它作为简单的变种

 Sub someSub(myArray as Variant) 

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

 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] 

时间稍长一点,但是types安全将使您的代码运行得更快,并使其阅读起来更容易。 它也可以防止你遇到的错误…