检查参数是否是某个数组
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
我有两个数组,我想将它们作为参数传递给另一个 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