excel - 在子例程之间传递二维数组 Excel VBA

标签 excel vba subroutine

我似乎无法让它发挥作用。

我想将一个 2D 数组从一个子例程传递到其他应进行数据操作的子例程。

我从 Sheet1 上的命令按钮调用下面的子例程。在Module1中,我已将变量声明为公共(public)变量。在子例程 ReadData 内,在 End If 语句处,InputArray 填充有一个数组,该数组由用户在输入框后面标记的数字组成。子例程 ReadData 完成后,InputArray 为空。

我做错了什么明显且明显愚蠢的事情?

** Sheet1**:
Private Sub CommandButton1_Click()
    Call ReadData
End Sub

**Module1**:
Option Explicit
Option Base 1
Public MyRange, InputArray As Variant

Sub ReadData()
    Set MyRange = Application.InputBox("Mark the data array", Type:=8)
    If Not MyRange Is Nothing Then
        InputArray = MyRange
    End If
End Sub 

最佳答案

按如下方式填充数组并在局部窗口中进行检查。通过使用 .Value,您可以从选定的图纸范围创​​建一个二维数组。 MyRange 我认为可以是本地范围并声明为 Range。 InputArray 可能也应该是本地范围,并简单地作为参数传递给其他子/函数。

Public InputArray As Variant

Sub ReadData()
    Dim MyRange As Range
    Set MyRange = Application.InputBox("Mark the data array", Type:=8)
    If Not MyRange Is Nothing Then
        InputArray = MyRange.Value
        Stop '<==Delete me after inspection
    End If
End Sub

Sheet

关于excel - 在子例程之间传递二维数组 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578837/

相关文章:

Perl:cmpthese 文本与传递参数的匿名子问题

C - 将指针作为参数传递

c# - CSV 编码问题 (Microsoft Excel)

excel - 如何将 Excel 中的变量标签导入 Stata

vba - 设置动态范围导致 "Object Variable or with Block variable not set"错误

vba - CountA 返回 0,WorksheetFunction.CountA 返回 1

.net - Office 功能区 XML 与 Office 标准功能区设计器?

arrays - qbasic 如何将数组和变量传递给函数/子程序?

vba - 从电子邮件中提取第 3 行和第 4 行

excel - 当我使用 TRANSPOSE 将其粘贴到工作表中时,为什么我的数组会破坏列?