在多个工作表中使用范围变量

时间:2015-01-22 15:57:44

标签: excel vba excel-vba

使用包含范围的变量时出现问题。

我已宣布变量" rng"全局在工作簿模块中:

Public rng As Range

现在在工作表模块中,我在单击复选框后设置变量并为其定义范围:

Sub CheckBox1_Click()
    Set rng = Range("D8:Q51")

    If Me.OLEObjects("checkbox1").Object.Value Then
        Call clear(rng)
    Else
        Call aus(rng)
    End If
End Sub

我在调用sub" aus(rng)"时总是出错。其中说:

  

错误438,对象不支持此属性或方法

" AUS(RNG)"包含以下代码:

Worksheets(5).rng.Copy Worksheets("aktuell").rng

顺便说一句:在同一工作表中使用范围变量,模块连接到不会抛出错误。因此错误必须与"工作表(5)"。

相关联

1 个答案:

答案 0 :(得分:3)

使用Set定义范围并且未定义工作簿或工作表的父对象时,它将默认为ActiveWorkBookActiveWorkSheet。因此就像写作:

Set rng = ActiveWorkbook.ActiveSheet.Range("D8:Q51")

在代码中稍后使用rng时,您尝试在Sheet下分配,基本上是写作:

Worksheets(5).ActiveWorkbook.ActiveSheet.Range("D8:Q51").Copy

我们知道的是语法不正确并且会出错。

作为解决方法,您可以使用以下代码:

Worksheets(5).Range(rng.Address).Copy Worksheets("aktuell").Range(rng.Address)