2017-09-07 192 views
0

我正在嘗試編寫一個適用於各種工作表的宏。這些都是按月更新的。在這些工作表中,我們在工作表頂部有30到100行之間的關於當前月份的公式。下面我們有所有前幾個月的數字,但沒有公式。VBA Excel複製並插入不同數量的行數值和格式

我們每個月都複製最上面的一組行,並將它們插入到具有公式的行下面的相同格式的值中,以便我們可以再次開始該月份,但記錄上個月的數字。總之,我需要從行(X + 1)開始複製和插入所有列和(X行數)作爲值和格式。另外行(X + 1)不是工作表的結尾。

我在下面的代碼有一些開始,但第一列確實包含空白值。

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 
+0

如果你已經設置了工作表對象'TotalImpacts',那麼稍後引用它們時,而不是'Thisworkbook.Sheets(TotalImpacts).Range'只是使用'TotalImpacts.Range' – BobtimusPrime

+0

如果我理解正確,有兩個電子表格中的區域 - 包含公式的「工作範圍」和僅包含每月更改的靜態數據的「數據範圍」。是否只有一個月的數據存儲在數據區? – BobtimusPrime

+0

不。數據範圍隨着我們每增加一個月而增加。這就是我插入新行的原因。如果您要向下滾動,我們需要整理數月的數據。 –

回答

0

這不是最有效的方法,但插入整行對於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 

最後,範圍被粘貼兩次,第一次用公式能夠插入正確數量的行。第二次是粘貼數值然後單獨使用公式,就像您在原始代碼中所做的一樣。

+0

我在嘗試運行時仍遇到錯誤,因爲我已合併單元格。插入單元格然後嘗試粘貼值時,我收到合併單元格必須具有相同大小的錯誤。任何想法糾正?如果這不是最簡單或最有效的方式,我很樂意嘗試其他的東西。我在VBA中沒有經驗。**編輯 –

+0

你的合併單元在哪裏?如果你可以截取一些數據樣本,可以更好地瞭解一些限制。我猜可能更容易的是:每月將數據複製到一張單獨的表格 - 或者 - 如果您需要將這些數據一起用於分析,則需要有一張單獨的表格,並將新月份粘貼到底部。 (粘貼在底部比用excel插入要容易得多)。 – BobtimusPrime

相關問題