2011-11-16 40 views
0

我的目標是獲得一個需要花費一週的數據的宏,將總結/總計粘貼到另一個工作表中,然後隱藏/刪除剛剛複製的星期(或將其移動到一張不同的紙張,我不在乎)。 在年底,你應該基本上每週都從Sheet1複製到Sheet2Excel - 刪除列但保留命名範圍

目前我已經命名週一至週五的細胞 - 我希望在宏運行後移動。

我有什麼那麼遠,

工作表( 「粘貼的東西在這裏」),範圍( 「A1」)。值=工作表( 「YearlyDaily」),範圍(」 1周含總列 「)。價值

工作表(」 YearlyDaily 「)範圍(」 週一至週五「)。選擇Selection.Delete移位:= xlToLeft

回答

1

可以改變指定範圍以同樣的方式定義他們:

Option Explicit 

Sub NamedRange() 

    Dim Rng1   As Range 

    'Change the range of cells (A1:B15) to be the range of cells you want to define 
    Set Rng1 = Sheets("Sheet1").Range("A1:B15") 
    ActiveWorkbook.Names.Add Name:="MyRange", RefersTo:=Rng1 

End Sub 

[Source]

然而,正如其他的答案中指出,有可能是其他(更好)方法來處理這個。請告訴我們更多或者提出更多信息以提供新問題,以便我們能夠爲您提供幫助。

1

我知道這是一個很好的做法,但是您爲什麼在週一至週五使用命名的範圍是有原因的嗎?如果使用單元格引用,它們將始終指向同一區域,即使在刪除之後。除非我錯過了一些東西。沒有看到你的專欄很難看到。

0

我在這裏假設你的意思是「我希望在宏運行後移動它」。是你想要命名的範圍移動。

我有一個電子表格,用於跟蹤一週的時間,「第一」表是活動表。當一週結束後,我將整個活動工作表複製到新工作表中。我想從前一週繼續進行總計,所以我保留了這些數據。我這樣做有3列:當前周總數,舊(前幾周)總數,新總數。我將新總數的值粘貼到舊總數。然後我清除用於輸入的單元格。

我的每一個本能都是使用命名單元格,但在這種情況下,我認爲這不是正確的做法。我只是使用單元格區域(A1,K2:K0等)問題是名稱不是每個表單的本地名稱,所以您必須將名稱從舊錶單移動到新表單,而這不是值得努力。此外,在這種情況下,創建每個表單所獨有的類似名稱(例如,Mon-FriWeek1,Mon-FriWeek2等)的替代方案在第一週沒有給你帶來任何實際意義!A1:A10等 - 除了可能自我滿足,你使用的名字就像你「應該」那樣。無論如何,這是我的意見!

也許這可能有所幫助:在我的電子表格中,行可以從一週到下一週添加/刪除。爲了允許這樣做,仍然避免命名範圍,我模仿去每列有一個公式的列,然後按Shift + End然後按向下箭頭。選擇將在輸入內容的最後一個單元格停止。下面是該代碼(第一行頭/標籤):

'Copy New Total Hours as PasteValues to Old Total 
    Dim lastRow As Long 
    Range("K1").Select 
    Range(Selection, Selection.End(xlDown)).Select 
    lastRow = Selection.Rows(Selection.Rows.Count).Row + 1 
    Range("K2:K" & CStr(lastRow)).Select 
    Selection.Copy 
    Range("J2").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

你需要保持至少一個排在了那裏,還是它(在我的情況非常多其他的事情)沒有按」工作。但是,這適合我的需求就好。

我希望這會有所幫助。

+2

請不要使用'Select',除非它真的**是必需的(它幾乎從來不是這樣) – JMax