Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 避免在各种工作表中设置单元格时出现循环_Vba_Excel - Fatal编程技术网

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