【问题标题】:Cannot assign variant array to typed array无法将变体数组分配给类型化数组
【发布时间】:2017-10-05 05:56:00
【问题描述】:

谁能解释为什么这个 VBA 函数在定义 MyArray 的行上终止?

Function FindEndPinyin2(Rge As Range) As Integer

Dim MyArray() As String

MyArray = Array("cat", "dog")

FindEndPinyin2 = 2

End Function

函数,简单地退出并返回一个#Value!到达MyArray = Array( "Cat", "Dog") 行时出错 我意识到这个功能没有做任何有意义的事情。这是一个简化的例子。 提前致谢

【问题讨论】:

  • 这是什么语言?请适当标记。
  • 是 Visual Basic 吗?
  • 是的,它是 VBA。抱歉,我没有提到这一点,因为我认为这是一个仅限 VBA 的区域。我现在已经更新了帖子。

标签: arrays vba excel function


【解决方案1】:

VBA 不会将 Variant Array 转换为 Typed Array。您应该选择其中一个并使用它。

Dim MyArray() As String ' <--- MyArray is a TYPED array
MyArray = Array("cat", "dog") ' <-- Type Mismatch

Array(...) 是一个返回Variant Array 的VBA 函数。因此,即使 Variant Array 中的元素都是适当的类型(在您的情况下为 String),您也无法执行将变量数组转换为类型化数组的赋值。

如果您坚持进行这种转换,您将需要一个循环来逐个元素地填充类型化数组。更简单的是将 MyArray 声明为一个变体数组,或者只是一个变体:

Dim MyArray
' Also works: Dim MyArray()
' Also works: Dim MyArray() As Variant

MyArray = Array("cat", "dog")

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多