2012-05-04 106 views
0

我在列H2中有數據。 。我想將它們複製到同一電子表格的其他地方。 但是我複製它的地方會一次更改一個COLUMN,因爲下面的每一列都被宏所填充。從一列複製數據,粘貼第一個空列

我現有的宏成功搜索並將此列數據粘貼到下面的空列如B31。當我有10個新的數據時,下一次運行宏時,我想將它粘貼到C31中,在列C中(是下一個空行)。下一次,D31 .......等。 。我的宏在H2:H11中重複抓取數據並將其粘貼到B31中,但是每次我再次運行宏時都會覆蓋該列。它不是「看到」列B已經有數據放在那裏通過運行宏之前....代碼有什麼問題?

Range("H2:H11").Select Selection.Copy 
Range("A31").Select 
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
ActiveCell.Rows("1:10").EntireRow.Select 
Application.CutCopyMode = False 
+0

是第一次通過後B31有沒有數據? – Sam

+0

我有一個替代解決方案,我可以發佈,如果你想。 – Sam

+0

是的,B31不斷收到新數據,覆蓋以前的數據。僅供參考,A31包含「標題」信息,因此它從a31開始,看到它不是空白,移動到一個單元格並粘貼,即使它不是空白。 – CJG

回答

1
Range("A31:M31").End(xlToLeft).Offset(0, 1).Select  

應該

Range("M31").End(xlToLeft).Offset(0, 1).Select 

替代解決方案是下面(我沒有測試它,因爲我不是我的MS PC上,抱歉)

dim lRow as Long 'Output Row 
lRow = 31   'Start at row 31 

    For i = 2 to 13 'Column B to Column M 

     'Count if there is any values in the columns 
     '(if there is a header then change the 0 to 1) 

     If Application.WorksheetFunction.CountA(ActiveSheet.Columns(i)) = 0 Then 

      For Each c in Range("H2:H11") 'Cycle through output values 

      ActiveSheet.Cells(lRow, i).value = c.Value 'Assign values 

      lRow = lRow + 1 'Increment row number 

      next c 

     exit for 'exit column loop 

     end if 

    next i 
+0

我的方法可能不是最好的做事方式,但我儘量避免在宏中複製和粘貼。 – Sam

+0

簡短的一行解決方案修復它...非常感謝。 – CJG

相關問題