gpt4 book ai didi

arrays - 无法将变体数组分配给类型化数组

转载 作者:行者123 更新时间:2023-12-02 16:39:16 26 4
gpt4 key购买 nike

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

Function FindEndPinyin2(Rge As Range) As Integer

Dim MyArray() As String

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

FindEndPinyin2 = 2

End Function

该函数只是退出并返回一个#Value!一旦到达行 MyArray = Array(
“猫”,“狗”)
我意识到这个功能没有做任何有意义的事情。这是一个简化的示例。提前致谢

最佳答案

VBA 不会将变体数组转换为类型化数组。您应该选择其中之一并使用它。

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

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

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

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

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

关于arrays - 无法将变体数组分配给类型化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43827167/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com