我似乎无法让它发挥作用。
我想将一个 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
关于excel - 在子例程之间传递二维数组 Excel VBA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51578837/