2013-11-27 56 views
0

我真的希望有人可以幫助我與這一個。我已經記錄了一個宏,用於在需要在2個工作表上的相同位置創建一行的工作表中,然後在其中一個工作表上將公式從其下面的行中複製到單元格中。我的代碼看起來是這樣的 -在Excel中的VBA代碼添加一行到多個工作表,然後從相鄰的行復制公式

Sub Macro1() 
Sheets(Array("SCHEDULE", "ANNUAL SUMMARY")).Select 
Sheets("SCHEDULE").Activate 
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select 
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 
Sheets("ANNUAL SUMMARY").Select 
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select 
Selection.AutoFill Destination:=ActiveCell.Offset(-1, 0).Rows("1:2").EntireRow _ 
    , Type:=xlFillDefault 
ActiveCell.Offset(-1, 0).Rows("1:2").EntireRow.Select 
Sheets("SCHEDULE").Select 
ActiveCell.Select 

我的問題是,當我手動運行它,然後錄製宏,它不正是我想要它,但是當我從一個按鈕上運行此「 SCHEDULE「表格,它不會複製公式從」年度總結「頁面下面的行中複製公式。

任何人都可以幫助得到這個工作與我?

感謝所有提前

馬克

+3

[有趣的閱讀](HTTP://計算器。 com/questions/10714251/excel-macro-avoid-using-select) –

回答

0

與宏錄製的問題是,雖然它可以給你的,你需要什麼樣的代碼一個很好的跡象,它也產生非常低效的代碼,包括所有您需要嘗試並避免使用的select和activate語句。

代碼中任何引用ActiveCell指的是當前選中的單元格,ActiveSheet是當前選中的表單。這可以給你意外的結果,如果你運行從宏觀,從記錄不同的表宏...


如果你想從計劃表複製第1行,那麼你可以使用

Sheets("SCHEDULE").Rows(1).Copy Sheets("ANNUAL SUMMARY").Rows(1) 
記在你的年度總結表

能排100 -

如果要自動填充範圍內,那麼可以用一個單一的代碼行

這將自動填充ROW1的內容(E列A)完成

Sheets("ANNUAL SUMMARY").Range("A1:E100").FillDown 

因此,如果我們把它放在一起,包括一些聲明爲我們的源和目標板,使子更易讀..


Sub CopyAndFillDownExample() 
    Dim rowNumber As Long, offset As Long 

    Dim sourceSht As Worksheet, destinationSht As Worksheet 

    'set the source and destinationsheets 
    Set sourceSht = Sheets("SCHEDULE") 
    Set destinationSht = Sheets("ANNUAL SUMMARY") 

    'number of rows to copy down 
    offset = 100 

    'get currently selected row 
    rowNumber = ActiveCell.Row 

    'copy the selected row from the source sheet to the destination sheet 
    sourceSht.Rows(rowNumber).Copy destinationSht.Rows(rowNumber) 

    'fill down the formulas 
    destinationSht.Rows(rowNumber & ":" & rowNumber + offset).FillDown 

End Sub 
+0

謝謝Sam。我如何在這種情況下使用它?如果宏在這兩張紙上創建新行(並且它確實如此),那麼我將如何針對需要使用您提供的代碼填充的特定行進行定位? –

+0

我剛剛在我的答案中添加了一行代碼,用於演示覆制行。因此,您需要將您的行復制到新工作表,然後自動填寫您複製到的工作表。你是否總是將數據複製到目標表中的固定位置?即第1行 – Sam

+0

所以這種方式的工作方式是使用工作簿的人在他們希望在工作表1上創建新行(通常在列A中)的行的下面選擇一個單元格。然後他們需要運行創建的宏這行和另一個工作表上的一行(表2)誰的行號與表1上的行相對應。然後表2中的行需要用已創建的行下面的公式填充(因此保持連續模式公式) - 這有道理嗎? –

相關問題