如何将List模块中getlist函数的tableData二维数组复制到Main子程序?
VBA模块间二维数组传递实现方案
核心问题修正
你之前的代码存在两个关键问题:
getlist函数未声明返回值类型,无法传递数组- 函数内的
tableData是局部变量,外部模块无法直接访问
修改后的完整代码
List模块代码
' List模块 Public Function getlist() As String() ' 示例:创建并初始化二维数组(可根据实际需求修改大小和内容) Dim tableData(1, 2) As String tableData(0, 0) = "A1" tableData(0, 1) = "A2" tableData(0, 2) = "A3" tableData(1, 0) = "B1" tableData(1, 1) = "B2" tableData(1, 2) = "B3" ' 将数组作为函数返回值传递出去 getlist = tableData End Function
Main模块代码
' Main模块 Sub Main() Dim partlist() As String ' 调用List模块的getlist函数,接收返回的二维数组 partlist = List.getlist ' 可选:遍历数组验证结果(输出到立即窗口) Dim i As Integer, j As Integer For i = LBound(partlist, 1) To UBound(partlist, 1) For j = LBound(partlist, 2) To UBound(partlist, 2) Debug.Print "partlist(" & i & "," & j & ") = " & partlist(i, j) Next j Next i End Sub
关键说明
- 函数必须明确声明返回值类型为
String(),对应二维字符串数组 - 函数内部完成数组的创建和赋值后,直接将数组赋值给函数名,以此作为返回值
- 主程序中通过调用
List.getlist获取数组,无需访问函数内的局部变量(局部变量仅在函数内部有效) - 如果需要动态调整数组大小,可在函数内使用
ReDim(如需保留数据则用ReDim Preserve),最后同样将数组赋值给函数名返回
内容的提问来源于stack exchange,提问作者mesyen
相关产品推荐
相关产品推荐

