检查参数是否是某个数组

Check if an argument is a certain array

我有两个数组,我想将它们作为参数传递给另一个 Sub:

Public arr1 As Variant
Public arr2 As Variant

Sub Main()
    arr1 = listSheet.Range("E2:G4").Value
    arr2 = listSheet.Range("H2:J60").Value

    call mySub(arr1)
    call mySub(arr2)
End sub()

在 "other" 子中,我需要检查传递的是哪个数组,但以下选项的 none 有效:

sub mySub(ByRef myArr As Variant)

    if myArr=arr1 Then
    'do actions
    end if
'and I also tried:
    if myArr is arr1 then
    'do actions
    end if
end sub

我怎样才能使用 IF 语句检查它,或者这是否可以通过任何其他方式实现?

您可以将变量作为范围对象传递,并使用 Is 测试。例如:

Option Explicit
Public q8bAnswerList As Variant
Public q9AnswerList As Variant
Public r1 As Range, r2 As Range
Sub Main()
    Set r1 = Sheet1.Range("E2:G4")
    Set r2 = Sheet1.Range("H2:J60")

    Call mySub(r2)
    Call mySub(r1)

End Sub

Sub mySub(ByRef MyR As Range)
    Dim MyArr As Variant
MyArr = MyR
If MyR Is r1 Then
  Debug.Print MyR.Address
  Stop
ElseIf MyR Is r2 Then
    Debug.Print MyR.Address
    Stop
End If

End Sub