如何判断范围是在活动表格上还是在固定/特定工作表上?

时间:2015-01-26 22:10:46

标签: vba excel-vba excel

如果我

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,我意识到一个范围对象,一旦创建,总是在一个固定的工作表上,这是创建范围对象的工作表。

2 个答案:

答案 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