【问题标题】:Split array as input parameter拆分数组作为输入参数
【发布时间】:2013-11-25 00:49:25
【问题描述】:
在一个名为的类模块中,我有
Private pARRactivityPred() As String
Public Property Let predArray(Value() As String)
pARRactivityPred = Value
End Property
并称它为:
record.predArray = Split(string1, ",")
但是,我不确定为什么会出现以下错误:
"编译错误:定义相同的属性过程
属性不一致,或者属性过程有一个可选的
参数、ParamArray 或无效的集合或最终参数"
有人知道怎么回事吗?
【问题讨论】:
标签:
arrays
class
vba
module
【解决方案1】:
这行得通:
Dim s() As String
s = Split("a,b,c,d", ",")
record.predArray = s
record.predArray 需要一个 String 数组作为输入,但 Split 返回一个 Variant 数组,这会导致类型不匹配错误。在这里,我将Split 的输出转换为字符串数组,它可以工作。这种转换可以使用上面的赋值运算符= 自动完成,但它不能通过像predArray 这样的过程的输入参数来工作。参数必须是过程声明中指定的特定类型:Value() As String。
我看到@mehow 在我做之前一分钟按下了“回答”按钮 :-) 但是我认为像他一样使用循环从 Variant 数组转换为 String 数组是不必要的冗长。
但是我无法重现您的确切错误。使用您的代码,由于上述原因,我得到一个编译时“类型不匹配”错误——而不是您描述的错误。