在多个工作表中使用范围变量
Using range-variable in multiple worksheets
我在使用包含范围的变量时遇到问题。
我已经在工作簿模块中全局声明了变量 "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
我在调用子 "aus(rng)" 时总是出错,它说:
error 438, object doesn't support this property or method
"aus(rng)" 包含以下代码:
Worksheets(5).rng.Copy Worksheets("aktuell").rng
顺便说一句:在模块连接到的同一个工作表中使用范围变量不会抛出错误。因此错误必须以某种方式与 "Worksheets(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)
我在使用包含范围的变量时遇到问题。
我已经在工作簿模块中全局声明了变量 "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
我在调用子 "aus(rng)" 时总是出错,它说:
error 438, object doesn't support this property or method
"aus(rng)" 包含以下代码:
Worksheets(5).rng.Copy Worksheets("aktuell").rng
顺便说一句:在模块连接到的同一个工作表中使用范围变量不会抛出错误。因此错误必须以某种方式与 "Worksheets(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)