2013-07-31 134 views
3

這應該很簡單,但我有一段艱難的時間..我想將單元格A3複製到E3,並將它們粘貼到不同工作表上的下一個空行。我之前在較長的代碼字符串中使用過這段代碼..但是我不得不調整它,這次它不工作。當我運行下面的代碼時,我得到了「應用程序定義或對象定義的錯誤」。所有的幫助表示讚賞。在下一個空行中複製並粘貼設置範圍

Private Sub CommandButton1_Click() 
Dim lastrow As Long 

lastrow = Range("A65536").End(xlUp).row 
    Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A:A" & lastrow) 
End Sub 

回答

6

在沒有首先限定工作表的情況下,請小心「範圍(...)」,因爲它將使用當前活動的工作表進行復制。最好完全符合兩張表格的資格。請給這個鏡頭(請在複製工作表中更改「Sheet1」):

編輯:僅基於以下注釋編輯粘貼值。

Private Sub CommandButton1_Click() 
Application.ScreenUpdating = False 
Dim copySheet As Worksheet 
Dim pasteSheet As Worksheet 

Set copySheet = Worksheets("Sheet1") 
Set pasteSheet = Worksheets("Sheet2") 

copySheet.Range("A3:E3").Copy 
pasteSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 
Application.CutCopyMode = False 
Application.ScreenUpdating = True 
End Sub 
+0

這複製並粘貼正確,但不在下一個空行。儘管謝謝你的回答! – Mike

+0

@Mike,gotcha,沒有問題:)我不知道如何設置「摘要信息」工作表,並且代碼假定單元格從A1到A的最後一行是連續的。如果更改'Cells(1 ,1)'到'單元格([BeginningOfDataInA],1)'它應該爲你工作。 –

+0

我說得太快..它又開始導致錯誤 – Mike

1

你也可以試試這個

Private Sub CommandButton1_Click() 

Sheets("Sheet1").Range("A3:E3").Copy 

Dim lastrow As Long 
lastrow = Range("A65536").End(xlUp).Row 

Sheets("Summary Info").Activate 
Cells(lastrow + 1, 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 

End Sub 
+0

這導致在單元格(lastrow + 1,1)上出現「範圍級別失敗的選擇方法」錯誤。選擇部分代碼 – Mike

+0

我測試了它,這兩個答案都適用於我。我需要更多的細節來理解爲什麼它沒有。 –

+0

在我運行工作簿中的任何其他宏之前,它可以工作。但是當我有數據來自單元格中的公式時,我正在複製並粘貼代碼不起作用 – Mike

3

的代碼是不工作的原因是因爲LASTROW是從什麼表是當前活動的測定及「答:A500」(或其他數字)不是有效的範圍參考。

Private Sub CommandButton1_Click() 
    Dim lastrow As Long 

    lastrow = Sheets("Summary Info").Range("A65536").End(xlUp).Row ' or + 1 
    Range("A3:E3").Copy Destination:=Sheets("Summary Info").Range("A" & lastrow) 
End Sub 
1

下面是一個行之有效的代碼,但我的價值觀在片重疊「最終」每次的<=11的條件表符合「計算器」

我想你好心支持我修改代碼所以光標應該移動到下一個空白單元格並且值會像列表一樣加起來。

Dim i As Integer 
Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Calculator") 
Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Final") 

For i = 2 To ws1.Range("A65536").End(xlUp).Row 

    If ws1.Cells(i, 4) <= 11 Then 

     ws2.Cells(i, 1).Value = Left(Worksheets("Calculator").Cells(i, 1).Value, Len(Worksheets("Calculator").Cells(i, 1).Value) - 0) 
     ws2.Cells(i, 2) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:D"), 4, False) 
     ws2.Cells(i, 3) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:E"), 5, False) 
     ws2.Cells(i, 4) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:B"), 2, False) 
     ws2.Cells(i, 5) = Application.VLookup(Cells(i, 1), Worksheets("Calculator").Columns("A:C"), 3, False) 

    End If 
Next i 
相關問題