VBA - 用于复制工作表的宏,插入公式并将行引用更改为+1

时间:2017-01-25 07:06:16

标签: vba excel-vba excel

我有复制一张样本表的宏。工作表副本数量基于不同的工作表值。我需要为每个副本插入不同的公式到特定范围,其中公式的行数提高+1。有可能这样做吗?

我需要的例子:

- Sheet1 "=DATA_SELECTED!$N$2"
- Sheet2 "=DATA_SELECTED!$N$3"
- Sheet3 "=DATA_SELECTED!$N$4"

这就是我现在没有公式中的+1。

Sub CopySheetsFromAList()

Dim MyCell As Range, MyRange As Range

Set MyRange = Sheets("DATA").Range("A1")
Set MyRange = Range(MyRange, MyRange.End(xlDown))
Set ws = Sheets("Sheet1")

For Each MyCell In MyRange
    ws.Copy after:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = MyCell.Value
    Sheets(Sheets.Count).Range("C3").Formula = "=DATA_SELECTED!$M$2"
    Sheets(Sheets.Count).Range("C4").Formula = "=DATA_SELECTED!$N$2"
    Sheets(Sheets.Count).Range("C6").Formula = "=DATA_SELECTED!$K$2"
    Sheets(Sheets.Count).Range("C7").Formula = "=DATA_SELECTED!$Y$2"
Next MyCell

End Sub

1 个答案:

答案 0 :(得分:0)

也许是这样的

Option Explicit

Sub CopySheetsFromAList()    
    Dim MyCell As Range, MyRange As Range
    Dim ws As Worksheet
    Dim iRow As Long

    Set MyRange = Sheets("DATA").Range("A1")
    Set MyRange = Range(MyRange, MyRange.End(xlDown))
    Set ws = Sheets("Sheet1")

    For Each MyCell In MyRange
        ws.Copy after:=Sheets(Sheets.Count)
        iRow = iRow + 1
        With Sheets(Sheets.Count)
            .Name = MyCell.Value
            .Range("C3").Formula = "=DATA_SELECTED!$M$" & (1 + iRow)
            .Range("C4").Formula = "=DATA_SELECTED!$N$" & (1 + iRow)
            .Range("C6").Formula = "=DATA_SELECTED!$K$" & (1 + iRow)
            .Range("C7").Formula = "=DATA_SELECTED!$Y$" & (1 + iRow)
        End With
    Next MyCell    
End Sub