2016-12-16 101 views
-2
Sub Worksheet_Change() 

Set Target = ActiveCell 
Application.ScreenUpdating = False 

[A1:F20].Copy 
[H4].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A22:F42].Copy 
[H24].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A44:F64].Copy 
[H46].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A66:F86].Copy 
[H68].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A88:F108].Copy 
[H90].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A110:F130].Copy 
[H112].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A132:F152].Copy 
[H134].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A154:F174].Copy 
[H156].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A176:F196].Copy 
[H178].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

[A198:F218].Copy[H200].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

Application.CutCopyMode = False 
Target.Select 

End Sub 
+0

請通過縮進這四個空格格式化你的代碼;它會在您的文章中顯示爲代碼而不是文本的一部分。此外,你的問題是指一個循環,但我沒有看到代碼中的任何循環? –

+0

我想應用循環,我已經寫了複製和粘貼特殊 –

回答

1

你可以試試這個:

Application.ScreenUpdating = False 

[A1:F20].Copy 
[H4].PasteSpecial Paste:=xlPasteValues, Transpose:=True 

With [A22:F42] 
    For i = 1 To 9 
     .Offset((i - 1) * 22).Copy 
     [H24].Offset((i - 1) * 22).PasteSpecial Paste:=xlPasteValues, Transpose:=True 
     Application.CutCopyMode = False 
    Next i 
End With 

Application.ScreenUpdating = True 
+0

但是如何做n個表? –

+0

不客氣。那麼你可能想標記爲已被接受。謝謝!如果您希望在每次工作表更改時都這樣做,則可以在'ThisWorkbook'代碼窗格中的'Private Sub Workbook_SheetChange(ByVal Sh As Object,ByVal Target As Range)'事件處理程序中將該代碼放入。當然,你必須引用所有範圍到'Sh'工作表對象,你可以通過以下方式輕鬆完成:1)將所有代碼封裝在'With Sh ... End With'塊中,2)添加一個點('.')在_every_開頭括號之前('[')。 – user3598756