2014-03-03 129 views
-2

我在一張紙上有一列行數未知的行,我想複製它並粘貼在另一張紙上。至於行數未知,我把它定義爲一個變量:如何將VBA中的一列粘貼到另一張紙上?

Sub Official() 
Dim lastrow As Long 
Dim LastCol As Long 
Set currentsheet = ActiveWorkbook.Sheets(1) 

LastRow = Range("A65536").End(xlUp).Row 
LastCol = Range("A1").End(xlToRight).Column 

Sheets("Type_1").Range("D8" & "D" & LastRow).Copy 
Sheets(1).Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=True 
End Sub 

我得到這個宏的錯誤,也許有人可以幫助我嗎?

+2

你已經錯過了結腸癌。將'Range(「D8」&「D」&LastRow).Copy'更改爲'Range(「D8:D」&LastRow).Copy'。順便說一句,在代碼'lastrow'中定義*活動工作表*,而您從工作表'Type_1'中複製數據。這是正確的行爲嗎? –

+0

謝謝!我改變了,但現在不復制任何東西。這可能是LastRow變量定義的問題嗎? 我應該爲Type_1定義它。問題是我必須複製許多不同的工作表的列,我必須爲他們每個人定義lastrow? – Ale

+3

在代碼'lastrow'中定義了*活動工作表*,而您從工作表'Type_1'中複製數據。嘗試使用'LastRow = Sheets(「Type_1」)。Range(「A65536」)。End(xlUp).Row' –

回答

0

你可以嘗試:

Sub Official() 
Dim lastrow As Long 
Dim LastCol As Long 
Dim srcLastRow As Long 

    Set currentsheet = ActiveWorkbook.Sheets(1) 

    ' handle Office 2007+ with more than 65536 rows... 
    lastrow = Range("A" & currentsheet.Rows.Count).End(xlUp).Row 
    LastCol = Range("A1").End(xlToRight).Column 

    ' find out how many rows there are in the source sheet 
    srcLastRow = Sheets("Type_1").Range("D" & Sheets("Type_1").Rows.Count).End(xlUp).Row 

    ' copy from the course sheet to the currentSheet in the range specified 
    Sheets("Type_1").Range("D8:" & "D" & srcLastRow).Copy Destination:=currentsheet.Range("A" & lastrow) 

    ' or maybe you want: 
    ' Sheets("Type_1").Range("D8:" & "D" & srcLastRow).Copy Destination:=currentsheet.Cells(lastrow, LastCol) 

End Sub 
+0

謝謝,菲利普,它已經解決了,但我認爲你的解決方案也能正常工作! – Ale

相關問題