如果我
Dim rng As Range
Set rng = Range("A1")
我知道rng实际上是ActiveSheet.Range(“A1”)
然后,如果我
Dim rngsht1 As Range
Set rngsht1 = Worksheets("Sheet1").Range("A1")
然后我知道rngsht1总是在Sheet1上
现在说我有一个名为“somerange”的范围对象,如果我想知道这个范围是什么表,我可能会这样做
somerange.worksheet.name
但是如果它给了我“Sheet1”,我不知道是不是因为我有了sheet1有效或因为某个范围总是在sheet1上,而不必在不同的工作表之间切换而是再试一次。
我的问题是,是否有一种简单的方法来判断范围对象是在活动表上还是在固定/特定表上?感谢。
更新:所以这个问题无效。感谢GSerg,我意识到一个范围对象,一旦创建,总是在一个固定的工作表上,这是创建范围对象的工作表。
答案 0 :(得分:1)
请尝试使用Is
运算符(对象比较):
If rangeObject.Worksheet Is ActiveSheet Then
' (... your code ...)
End If
答案 1 :(得分:0)
询问范围的父级
Sub MAIN()
Dim rng As Range
Set rng = Sheets(1).Range("A1")
Call IsItOnTheActiveSheet(rng)
End Sub
Sub IsItOnTheActiveSheet(r As Range)
If r.Parent.Name = ActiveSheet.Name Then
MsgBox "its on the activesheet"
Else
MsgBox "its not on the active sheet"
End If
End Sub