我想在包含多个表格的Excel工作表上自动更新范围。
我有
Dim datarange as Range
Dim dataend as Integer
dataend = Worksheets("Sheet2").Range("B2").CurrentRegion.Rows.Count
Set datarange = Worksheets("Sheet2").Range(Cells(2, 2), Cells(8, dataend))
这是为了更新另一张图表上的图表范围。
当我在即时窗口中打印Worksheets("Sheet2").Range("B2").CurrentRegion.Rows.Count
时,它返回数字7,所以我知道它正在计算行数。但是当我尝试运行代码时,我收到一条错误消息“应用程序定义或对象定义错误”。我不知道为什么Cells属性不会取dataend
变量的值。
答案 0 :(得分:1)
如果您在没有合格工作表参考的情况下使用Cells()
,则默认为活动工作表,因此您需要限定两个参考文件,以确保它们指向Sheet2:
With Worksheets("Sheet2")
Set datarange = .Range(.Cells(2, 2), .Cells(8, dataend))
End With
答案 1 :(得分:0)
您输入Cell
,表示活动工作表。
您可以使用
Set datarange = Worksheets("Sheet2").Range(Worksheets("Sheet2").Cells(2, 2), Worksheets("Sheet2").Cells(8, dataend)
获得范围。
但代表性太长了。因此,您可以使用with ... end with
来简化它,就像@Tim Williams在答案中所写:
With Worksheets("Sheet2")
Set datarange = .Range(.Cells(2, 2), .Cells(8, dataend))
End With
意思相同。