Vba 避免在各种工作表中设置单元格时出现循环
我可以将多个工作表中的特定单元格设置为相同的值,而无需使用类似以下内容的循环:Vba 避免在各种工作表中设置单元格时出现循环,vba,excel,Vba,Excel,我可以将多个工作表中的特定单元格设置为相同的值,而无需使用类似以下内容的循环: Sub ThisWorks() Sheets(Array("Sheet1", "Sheet3")).Select Sheets("Sheet1").Activate Range("B9").Select ActiveCell.FormulaR1C1 = "=""x""" End Sub 运行上面的宏会在数组中包含的工作表中的所有B9中放置相同的值 通过创建和使用与上述代码等效的对象,
Sub ThisWorks()
Sheets(Array("Sheet1", "Sheet3")).Select
Sheets("Sheet1").Activate
Range("B9").Select
ActiveCell.FormulaR1C1 = "=""x"""
End Sub
运行上面的宏会在数组中包含的工作表中的所有B9中放置相同的值
通过创建和使用与上述代码等效的对象,我正在尝试做同样的事情:
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
尽管这似乎违背了选择可以避免的概念。我知道这并不完全是您想要的,而是减少编码的一个选项
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
地下工程
Sheets("Sheet1").select
Range("B9").Select
ActiveCell.FormulaR1C1 = "=""x"""
Sheets("Sheet3").select
Range("B9").Select
ActiveCell.FormulaR1C1 = "=""x"""
End Sub
有趣的obj性能,+1教我新东西谢谢你……虽然这不是我想要的,但至少你已经向我展示了一种使用这种对象的方法+1@Gary学生,哦,我明白了,现在我学到了一些新的东西,谢谢,另一个+1来自我这边;如果您可以编辑您的答案,并解释您正在显示的代码的作用,以及该代码为什么/如何回答问题,那么它将非常有帮助。
Sheets("Sheet1").select
Range("B9").Select
ActiveCell.FormulaR1C1 = "=""x"""
Sheets("Sheet3").select
Range("B9").Select
ActiveCell.FormulaR1C1 = "=""x"""
End Sub