【问题标题】: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 数组是不必要的冗长。

但是我无法重现您的确切错误。使用您的代码,由于上述原因,我得到一个编译时“类型不匹配”错误——而不是您描述的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-25
    • 2015-10-01
    • 2020-10-22
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    相关资源
    最近更新 更多