首页 > 解决方案 > 使用不同工作表上的单元格设置 Range 对象

问题描述

我一直在用单元格创建范围,但总是在选定的工作表上。我使用以下语法:

Dim r as Range
Set r = Range(Cells(1, 1), Cells(4, 2))

这一直有效。

我不想使用以下语法在不同的工作表上选择一个范围:

Dim r as Range
Set r = Worksheets("working").Range(Cells(1, 1), Cells(4, 2))

并得到以下错误:“应用程序定义或对象定义错误”。

在直接窗口中,我发现了一些非常有趣的东西..假设“r”已变暗并且选定的工作表是(1)(不是“工作”..这是(2))

r = Worksheets("working").Range("A1:D2")   <<< THIS WORKS
r = Worksheets("working").Range(Cells(1, 1), Cells(4, 2))   << ERROR
r = Range(Cells(1, 1), Cells(4, 2)) <<< THIS WORKS (on selected sheet).

所以我很困惑,一直在梳理 SO 和其他网站。我知道我在做一些明显错误的事情......有人可以帮忙吗?

谢谢。

标签: excelvba

解决方案


限定所有对象(包括Cells)。

Dim ws as Worksheet: Set ws = ThisWorkbook.Sheets("working")

Set r = ws.Range(ws.Cells(1, 1), ws.Cells(4, 2))

推荐阅读