从上面复制公式

时间:2016-06-22 10:17:08

标签: excel-vba vba excel

我们有一个宏通过Excel 2013中的按钮工作,从上面插入一个带有公式的新行。问题是当它运行时,我说例如从第10行复制新行11中的公式仍然读回第10行而不是11?

Sub Loop_InsertRowsandFormulas()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Risk Input Sheet")
Dim vRows As Long
Dim lastCol As Long
Dim firstRow As Long

firstRow = InputBox("Enter Row To Start Insert From.")
vRows = InputBox("Enter Number Of Rows Required")

If firstRow = 0 Or vRows = 0 Then Exit Sub
Debug.Print firstRow
IngA = ws.Cells(5, ws.Columns.Count).End(xlToLeft).Column
For myLoop = 1 To vRows
    ws.Range("A" & (firstRow + myLoop)).EntireRow.Insert
    ws.Range("A" & (firstRow + myLoop) & ":BB" & (firstRow + myLoop)).Formula = ws.Range("A" & firstRow & ":BB" & firstRow).Formula
Next

End Sub

2 个答案:

答案 0 :(得分:1)

对此无能为力。谢谢戴夫。

Sub Loop_InsertRowsandFormulas()

Dim ws As Worksheet: Set ws = ThisWorkbook.Worksheets("Risk Input Sheet")
Dim vRows As Long
Dim lastCol As Long
Dim firstRow As Long

firstRow = InputBox("Enter Row To Start Insert From.")
vRows = InputBox("Enter Number Of Rows Required")

If firstRow = 0 Or vRows = 0 Then Exit Sub
Debug.Print firstRow
IngA = ws.Cells(5, ws.Columns.Count).End(xlToLeft).Column
For Myloop = 1 To vRows
    ws.Range("A" & (firstRow + Myloop)).EntireRow.Insert
    ws.Range("N" & (firstRow) & ":AW" & (firstRow + Myloop)).FillDown
Next

End Sub

答案 1 :(得分:0)

您需要执行Copy/Paste。例如,如果 A1 包含:

=B1+C1

运行:

Sub qwerty()
    Range("A2").Formula = Range("A1").Formula
End Sub

也会将 A2 留给=B1+C1

如果您希望复制的公式“调整”,则:

Sub ytrewq()
    Range("A1").Copy Range("A2")
End Sub

修改#1:

而不是:

ws.Range("A" & (firstRow + myLoop) & ":BB" & (firstRow + myLoop)).Formula = ws.Range("A" & firstRow & ":BB" & firstRow).Formula

使用类似的东西:

ws.Range("A" & firstRow & ":BB" & firstRow).Copy ws.Range("A" & (firstRow + myLoop) & ":BB" & (firstRow + myLoop))