2016-06-28 1480 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

相关问题