2016-10-24 5 views
-1

하나의 열과 여러 행 (동적 목록)이있는 데이터 파일이 있습니다. 첫 번째 행에 처음 28 개 행을, 두 번째 행에 두 번째 28 개 행을 옮겨 놓고 싶습니다. 나는 빈 행이 발견 될 때까지 이것을 실행하고 싶습니다. 그러나 내가 코드를 실행하면 첫 번째 28 행만이 이전됩니다. "do until empty"루프로 결과를 얻지 못하고 오류를 발견 할 수 없습니다. 도움 주셔서 감사합니다.매크로에서 빈 행 루프까지 수행

Sub Macro1() 
    ' 
    ' Macro1 Macro 
    ' 
    ' 
    Range("A1").Select 
    Do 
    Range("A1:A28").Select 
    Selection.Copy 
    Sheets("Sheet2").Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,  SkipBlanks:= _ 
    False, Transpose:=True 
    ActiveCell.Offset(1, 0).Select 
    Loop Until ActiveCell.Value = "" 
    End Sub 
+0

코드를 게시하시기 바랍니다. – Brian

+0

질문에 직접 코드를 붙여 넣을 수있는 경우 코드 이미지를 게시하지 마십시오. –

답변

1

매크로 레코더가 루프를 수행하지 않습니다. 루프에서 Offset을 풀 필요가 있습니다. 그렇지 않으면 완전히 자격 :

UPDATE

Option Explicit 

Sub CopyPaste() 

Dim CopySheet As Worksheet 
Dim PasteSheet As Worksheet 
Dim MyRange As Range 
Dim i As Long 
Dim r As Long 
Dim wf As WorksheetFunction 

Application.ScreenUpdating = False 

Set wf = Application.WorksheetFunction 
Set CopySheet = ActiveWorkbook.Worksheets("Sheet1") 
Set PasteSheet = ActiveWorkbook.Worksheets("Sheet2") 
Set MyRange = CopySheet.Range("A1:A28") 
r = MyRange.Rows.Count 
i = 1 

Do Until wf.CountA(MyRange) = 0 
    MyRange.Copy 
    PasteSheet.Cells(i, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True 
    Set MyRange = MyRange.Offset(r, 0) 
    i = i + 1 
Loop 

Application.ScreenUpdating = True 

End Sub 
+0

@DirkReichel 틀렸어. 불완전한, 예. 나는 그에게 질문에 그의 코드를달라고했다. 팀 윌리엄스도 한 것처럼 보입니다. – Brian

+0

@DirkReichel 예, 이해합니다. 알겠습니다. 바라기를, 당신은 내 개선이 좋아질거야. 나는 여전히 자신을 중급이라고 생각한다. 그래서 나는 피드백에 감사드립니다. – Brian

+0

예 ... 지금은 훨씬 좋아 보입니다.) –