在多个工作表中使用范围variables
使用包含范围的variables时遇到问题。
我在工作簿模块中全局声明了variables“rng”:
Public rng As Range
现在在工作表模块中,我点击checkbox后设置variables,并为其定义一个范围:
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
调用子“aus(rng)”时总是会出现错误:
错误438,对象不支持这个属性或方法
“aus(rng)”包含以下代码:
Worksheets(5).rng.Copy Worksheets("aktuell").rng
顺便说一句:在模块连接到同一工作表使用范围variables不会抛出一个错误。 所以错误不得不与“工作表(5)”相关联。
当您使用Set
定义Range并且未定义Workbook或Worksheet的父对象时,它将默认为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)