我有一系列公式需要在所有工作表中复制。范围从AB1:AC5开始。公式需要在工作表中使用,并取自称为“模板”的工作表,这是工作簿中的第一张工作表。我相信我已经选择了范围,它将继续仅从“模板”中复制。我如何将其粘贴到其他每张纸上?
Sub FillSheets()
Dim sh As Worksheet
Dim rng As Range
Dim worksheetsToSkip As Variant
worksheetsToSkip = Array("Aggregated", "Collated Results", "Template", "End")
Set rng = Sheet1.Range("AB1:AC5")
For Each ws In Worksheets
If IsError(Application.Match(ws.Name, worksheetsToSkip, 0)) Then
End Sub
答案 0 :(得分:1)
距离您很近,因为您必须使用Formula
对象的Range
属性和对“源”范围Address
的引用
此外,您的变量名不匹配:声明为sh As Worksheet
,但随后使用了ws
尝试一下:
Sub FillSheets()
Dim sh As Worksheet
Dim rng As Range
Dim worksheetsToSkip As Variant
worksheetsToSkip = Array("Aggregated", "Collated Results", "Template", "End")
Set rng = Sheet1.Range("AB1:AC5")
For Each sh In Worksheets
If IsError(Application.Match(sh.Name, worksheetsToSkip, 0)) Then sh.Range(rng.Address).Formula = rng.Formula
Next
End Sub
答案 1 :(得分:0)
有一个名为Template
的工作表。您可以将公式A1
写入单元格=A2+A3
。您也可以写=Template!A2+A3
或=Template!A2+Template!A3
。在所有三种情况下,结果都是相同的。但是,当您将Paste Special
公式=A2+A3
放入另一张纸时,每种情况下您将获得不同的公式,因此结果也可能不同。此代码通过仅粘贴第一个方案(=Template!A2+A3
)消除了这种可能性。
在我们的示例中,当选择Template
选项卡时可能发生=
,在编辑栏中输入等号(Template
),单击了另一个选项卡,然后点击A2+A3
标签,输入ENTER
并按下=Template!A2+Template!A3
。
选择Template
选项卡时可能发生=
的情况,在编辑栏中输入等号(Template
),单击另一个选项卡,然后单击{{1} }标签被单击,A2
被选择,另一个标签被单击,(+
)被输入,Template
标签被再次单击,A3
被选择并且{ {1}}被按下。
ENTER