2014-02-20 47 views
0

我想寫一個宏,它插入我選定的行下面指定的行數。每個新插入的行都需要複製已在工作簿中創建的一行公式(第2行)。我似乎無法弄清楚如何讓宏將該行公式粘貼到每個新創建的行中。我對宏非常新,並會感謝任何幫助!這裏是我(和它的作品用於創建行#,但只有粘貼行2到所創建的最後一行):寫一個宏,將一個特定的行復制到插入的行數中

Sub InsertSessions 
Dim Rng as long 
Dim k as long 
Dim rRange as Range 

Set rRange = Selection 

ActiveCell.EntireRow.Select 

Rng = InputBox("Enter number of sessions:.") 
For k = 1 To Rng 
Rows(rRange.Row).Insert Shift:=xlDown, _ 
      CopyOrigin:=xlFormatFromLeftOrAbove 
Rows(2).Copy Destination:= Rows(rRange.Row) 
End Sub 

如果可能的話,我也想知道如何進行宏觀DO以下兩兩件事:

  1. 創造一個少排,然後在選擇的(如:如果我進入4節,我想只有3個要創建

  2. 行是否有第一種方式創建的行包含公式集(從「行2」中複製)和所有後續從行「3行」複製nt行(即如果我輸入4個會話,第一行將複製第2行,接下來的2個插入行將複製第3行)

謝謝!

+0

1)你有公式或相對絕對引用(用'$'符號)? 2)如果是相對的,你是否需要在新行中粘貼精確的公式,或者調整(當公式包含時,比如'= A1',粘貼到新行後它將被調整爲,例如'= D1')? –

+0

相對 - 調整到他們被粘貼在 – Audra

回答

0

試試這個

Sub InsertSessions() 
Dim Rng As Long 
Dim k As Long 
Dim rRange As Range 

Set rRange = Selection 

ActiveCell.EntireRow.Select 

Rng = InputBox("Enter number of sessions:.") 
For k = 1 To Rng 
Rows(rRange.Row).Insert Shift:=xlDown, _ 
      CopyOrigin:=xlFormatFromLeftOrAbove 
Call rRange.Copy(Range(Cells(rRange.Row - 1, rRange.Column), Cells(rRange.Row - 1, rRange.Column))) 


Next k 
End Sub 
+0

不幸的是,它給了我相同的結果 - 請求的行數與公式只填充最後一行 – Audra

+0

這很奇怪。這就是我正在做的。我在單元格A1到A10中有一個公式。我選擇單元格A5,然後運行宏。比方說我輸入3.然後我得到A1到A13與相同的。這不是你想要做的嗎? – Pedrumj

+0

所以,理想情況下,我希望我的公式能夠存在於細胞A1 - H1中。當我運行宏時,我希望指定的行數填充在所選單元格的行下面(即我選擇了單元格E4,運行宏選擇3,然後選擇A5-H5,A6-H6,A7-H7以與A1-H1相同的相關公式插入)。 – Audra

相關問題