【发布时间】:2018-12-15 22:08:49
【问题描述】:
使用 VBA 创建 Word 宏遇到以下问题:
我正在尝试使用函数填充二维数组。问题是当我尝试将二维数组传递给函数时,出现以下错误:
类型不匹配的数组或预期的用户定义类型
我的宏:
Sub Tests()
'
' Tests Macro
'
Dim paragraphs(21, 1) As String
populate_paragraph (paragraphs)
End Sub
调用过程:
Sub populate_paragraph(replacers() As String)
ReDim replacers(21, 1) As String
replacers(0, 0) = "%HEADER%"
replacers(1, 0) = "%DESIGN_BRIEF_PARAGRAPH%"
...
replacers(21, 0) = "%DISCLAIMER_PARAGRAPH%"
replacers(0, 1) = create_header
replacers(1, 1) = create_design_brief_paragraph
...
replacers(21, 1) = create_disclaimer_paragraph
End Sub
如果我没有将二维数组传递给过程,而是尝试使用函数的返回值对其进行初始化,则会收到以下错误:
无法分配给数组
本例代码为:
Sub Tests()
'
' Tests Macro
'
Dim paragraphs(21, 1) As String
paragraphs = populate_paragraph
End Sub
调用函数:
Function populate_paragraph() As String
Dim replacers(21, 1) As String
replacers(0, 0) = "%HEADER%"
replacers(1, 0) = "%DESIGN_BRIEF_PARAGRAPH%"
...
replacers(21, 0) = "%DISCLAIMER_PARAGRAPH%"
replacers(0, 1) = create_header
replacers(1, 1) = create_design_brief_paragraph
...
replacers(21, 1) = create_disclaimer_paragraph
populate_paragraph = replacers
End Function
感谢您阅读我的问题并提供帮助
【问题讨论】:
-
您修改了问题内容 - 请更改标题以匹配新问题
-
你可以使用paraarray或者检查重复的问题stackoverflow.com/questions/34134936/…
-
@dbmitch 这不是重复的,至少不完全是,因为对于这个 OP 试图做的事情来说,答案并不是最优的(作为数据类型字符串的数组传递)。
-
但是,@dbmitch,原始问题在调用和被调用过程中都指定了一个字符串。并且不调用函数。当然,它可以以不同的方式完成,但如果你想要一个特定的数据类型......