我似乎无法使它正常工作。

我想将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之间传递二维数组-LMLPHP

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

10-12 00:32