避免在各种工作表中设置单元格中的循环

我可以在多个工作表中将特定的单元格设置为相同的值,而无需使用如下所示的循环:

Sub ThisWorks() Sheets(Array("Sheet1", "Sheet3")).Select Sheets("Sheet1").Activate Range("B9").Select ActiveCell.FormulaR1C1 = "=""x""" End Sub 

运行上面的macros将在Array()中包含的工作表中的所有B9中放置相同的值

我正在尝试通过创build和使用与上面的代码等效的对象来做同样的事情:

 Sub ThisPartiallyWorks() Dim obj As Object Set obj = Sheets(Array("Sheet1", "Sheet3")) obj.Select Range("A2").Formula = "=""x""" End Sub 

这运行没有错误,但只有一个工作表获取所需单元格中=“x”

我究竟做错了什么??

编辑#1

瓦西里的邮报给了我线索…………….这个版本似乎工作:

 Sub Finally() Dim obj As Object Set obj = Sheets(Array("Sheet1", "Sheet3")) obj.Select obj(1).Activate Range("B9").Select ActiveCell.FormulaR1C1 = "=""x""" End Sub 

虽然这似乎违反了Select可以避免的概念。

我明白这不是你想要的,但作为减less编码的select之一。

 Sub test() Dim obj As Object, i& Set obj = Sheets(Array("Sheet1", "Sheet3")) For i = 1 To obj.Count: obj(i).[B9].Formula = "=""x""": Next End Sub 

编辑#1

可能看起来像这样

 Sub Finally() Dim obj As Object Set obj = Sheets(Array("Sheet1", "Sheet3")) obj.Select: obj(1).[B9].Activate: ActiveCell.Formula = "=""x""" End Sub 
 Instead of using complex arrays, when you specifically know only two sheets need to be edited. Then we can do in simple. 

Sub ThisWorks()

  Sheets("Sheet1").select Range("B9").Select ActiveCell.FormulaR1C1 = "=""x""" Sheets("Sheet3").select Range("B9").Select ActiveCell.FormulaR1C1 = "=""x""" End Sub