2016-10-24 64 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

是的......現在看起來好多了;) –