我似乎无法使它正常工作。
我想将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
最佳答案
如下填充数组,然后在locals窗口中检查。通过使用.Value,可以从选定的图纸范围创建2D数组。我认为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/