2016-06-28 1487 views
0

我試圖只記錄一個使用擊鍵的宏,並且在我最後一次擊鍵時遇到了一個問題,因爲它沒有按照我期望的那樣做。我在做什麼的一點背景 - 我正在處理不斷增長的數據和滾動圖以繪製最後4行數據。我試圖從一張紙上覆制數據並將其粘貼到另一張紙上我桌子上的下一行。因爲我正在使用擊鍵,我預計宏將記錄點擊次數,但這不是它正在做的事情。相反,它會將數據粘貼到宏記錄的確切單元格上,而不是它下面的空單元格。例如,我已經有C19中的數據。當我運行這個宏時,我期望它將新數據粘貼到C20中,但是它會粘貼到C19上。我想我需要添加/編輯我的VBA,以便它將新數據粘貼到另一個工作表中的下一個空行。我希望這是有道理的。任何幫助都感激不盡!Excel VBA複製並粘貼到另一張表中的下一個空白行

謝謝!

Range("A1").Select 
Selection.End(xlDown).Select 
Selection.End(xlToRight).Select 
Range("C3").Select 
ActiveCell.FormulaR1C1 = "=DATE(YEAR(RC[-1]), MONTH(RC[-1])+1, DAY(RC[-1]))" 
Range("C3").Select 
Selection.Copy 
Range("B3").Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 
Range("C3").Select 
Application.CutCopyMode = False 
Selection.ClearContents 
Range("A1").Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Range("B85:K146").Select 
Selection.Copy 
Range("A1").Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlUp).Select 
Range("B9").Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 
Range("A1").Select 
ActiveSheet.Next.Select 
Range("A1").Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlToRight).Select 
Range("E71:G71").Select 
Application.CutCopyMode = False 
Selection.Copy 
Range("A1").Select 
ActiveSheet.Next.Select 
Range("A1").Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToLeft).Select 
Selection.End(xlUp).Select 
Selection.End(xlUp).Select 
Selection.End(xlDown).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToRight).Select 
Selection.End(xlToLeft).Select 
Range("C5").Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Selection.End(xlDown).Select 
Range("C19").Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 

末次

+0

'只使用擊鍵'請不要這樣做。編輯:使用邏輯和代碼它的方式^ _^ – findwindow

+1

另外,在您嘗試解決主要代碼問題之前,請***讀過[如何避免使用'.Select'](http:// stackoverflow .COM /問題/ 10714251 /如何對避免-使用選功能於Excel的VBA的宏)。這是一個很好的開始,特別是如果你使用宏錄像機。你會很快看到,你的代碼可以直接刪除。學習直接處理數據。 – BruceWayne

回答

0

正如其他人評論說,如果你對如何直接代碼,而不是錄製宏讀了它是最好的。作爲一個快速修復,雖然這應該幫助:

替換此:

Range("C19").Select 
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 

與此:

Cells(Range("C1000000").End(xlUp).Row + 1, 3).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ 
    False, Transpose:=False 

什麼.END(xlUp)確實是1,000,000行去向上尋找第一個包含內容的單元格。 .Row獲取它所在的行,+1表示我們想要下一行。細胞是表達Range的另一種方式,在線查找Range和Cell,它可以幫助你。

+0

這正是我想要做的。謝謝!! – NavCanIrene

相關問題