VBA Excel 复制和插入不同行数的值和格式

VBA Excel Copy and Insert Varying Number of Rows with Values and Formatting

我正在尝试编写一个适用于各种工作的宏sheet。这些内容每月更新一次。在这些工作 sheet 中,我们在 sheet 的顶部有 30 到 100 行,其中包含有关当月的公式。下面我们有前几个月的所有数字,但没有公式。

每个月我们都会复制最上面的一组行,并将它们作为具有相同格式的值插入到带有公式的行下方,这样我们就可以再次开始这个月,但会记录上个月的数字。

总而言之,我需要所有列,并且(X 行)从第 (X+1) 行开始复制和插入,仅作为值和格式。此外,行 (X+1) 不是 sheet 的末尾。

我对下面的代码有些了解,但第一列确实包含空白值。

    Sub MonthlyReset()

    Dim TotalImpacts As Worksheet
    Dim LastImpacts As Range
    Dim Counter As String


   Set TotalImpacts = Worksheets("Total Impacts")

Counter = Application.WorksheetFunction.Match("STOP", ThisWorkbook.Sheets(TotalImpacts).Column(1), 0)

LastImpacts = ThisWorkbook.Sheets(TotalImpacts).Rows("1:" & Counter)
Rows(Counter).Resize(Counter).Insert

'Copying Impacts
ThisWorkbook.Sheets(TotalImpacts).LastImpacts.Copy
'Paste Values then Formatting
ThisWorkbook.Sheets(TotalImpacts).Range("A" & Counter + 1).PasteSpecial Paste:=xlPasteValues
ThisWorkbook.Sheets(TotalImpacts).Range("A" & Counter + 1).PasteSpecial Paste:=xlPasteFormats
'Clear Clipboard
Application.CutCopyMode = False


End Sub

这不是最有效的方法,但在 excel 中插入整行可能会很麻烦,有趣的是。但是为了忠实于您最初的想法,这应该可行。

Sub MonthlyReset()

Dim TotalImpacts As Worksheet
Dim LastImpacts As Range
Dim Counter As String


'Set the worksheet we are working with
Set TotalImpacts = Worksheets("Total Impacts")

'Find the row that STOP is on
Counter = Application.WorksheetFunction.Match("STOP", TotalImpacts.Columns(1), 0)

'Set the range for the data we want to copy
Set LastImpacts = TotalImpacts.Rows("1:" & Counter)

'Copy and insert
LastImpacts.Copy
LastImpacts.Offset(Counter).Insert shift:=xlShiftDown

'Paste Values then Formatting
TotalImpacts.Range("A" & Counter + 1).PasteSpecial Paste:=xlPasteValues
TotalImpacts.Range("A" & Counter + 1).PasteSpecial Paste:=xlPasteFormats

'Clear Clipboard
Application.CutCopyMode = False


End Sub

最后,范围被粘贴了两次,第一次使用公式能够插入正确数量的行。第二次是粘贴值,然后单独粘贴公式,就像您在原始代码中所做的那样。