避免在各种工作表中设置单元格中的循环
我可以在多个工作表中将特定的单元格设置为相同的值,而无需使用如下所示的循环:
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