2016-06-28 4 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/questions/10714251/how-to-avoid-using-excel-vba-macros를 참조하십시오. 특히 매크로 레코더를 사용하는 경우 시작하는 것이 좋습니다. 꽤 빨리 볼 수 있습니다. 많은 코드를 곧바로 삭제할 수 있습니다. 대신 데이터로 직접 작업하는 방법을 익히십시오. – 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)이하는 일은 위쪽으로 찾고 행 100에서 이동하는 것입니다

첫 번째 셀에는 무언가가 들어 있습니다. .Row는 행을 가져오고 + 1은 다음 행을 원한다는 것을 의미합니다. 셀은 범위를 표현하는 또 다른 방법으로, 범위와 셀을 온라인으로 찾아 보면 자신의 방식대로 도움이 될 것입니다.

+0

정확히 내가 한 일입니다. 고맙습니다!! – NavCanIrene