【发布时间】:2020-08-30 14:34:47
【问题描述】:
以下(高度简化的)代码在调用参数 xabc 的 evalexp 时生成 type mismatch: array expected。为什么?
Public nfa() As String
Public rules() As String
Sub BuildNFA(xabc () As String)
Dim x
ReDim xnfa(5, 10)
x = evalexp(0, xabc)
End Sub
Function evalexp(rnb As Integer, xyz() As String) As String
xyz(rnb, replnode).name = "replnode"
evalregexp = ""
End Function
【问题讨论】:
-
我收到一个编译错误,指出
xyz(rnb, replnode).name中的name是无效的限定符。你在做什么?? -
首先,从
xabc ()中删除空间。其次,数组没有name属性。最后,我不明白您的代码中发生了什么。 -
对不起。印刷错误。带有 xyz 的行应该是 xyz(rnb, replnode) = "replnode"。
-
正如我所说,所给出的代码是从更多涉及的实际代码中简化的。带有 xyz 的行读作 xyz(rnb, replnode) = "replnode"。
-
我的意思是,我帖子中给出的代码(在我看来)完全有效,但无法编译。这会影响大约 10000 行的实际代码。(注意:实际代码仅使用一个(动态)数组即可正常工作。现在,它需要扩展为多个数组,因此它包含的过程需要传递数组引用到子过程和函数 - 这也不被编译器接受)。
标签: arrays vba parameters