使用包含范围的变量时出现问题。
我已宣布变量" 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)"。
相关联答案 0 :(得分:3)
使用Set
定义范围并且未定义工作簿或工作表的父对象时,它将默认为ActiveWorkBook
和ActiveWorkSheet
。因此就像写作:
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)