2017-06-22 296 views
0

我需要從表單窗體上的窗體中複製幾個單元格,然後將它們粘貼到工作表活動的新行中。Excel VBA按鈕(將單元格複製到另一個工作表中的新行)

其分解:

當點擊了按鈕: - 細胞「B2,B3,B4,B5,B6,A10,A16,A21,A24,E10,E17,E20,E23,E26 ,I10,I12,I14,I16,M10,M12,M14,M16,M19,M22「將被選中並複製。 - 複製的細胞粘貼在另一片(活動),並粘貼在一個新行(類似A + 1)

這是我到目前爲止有:

Private Sub CommandButton1_Click() 
Sheets("Form").Select 
Range("B2,B3,B4,B5,B6,A10,A16,A21,A24,E10,E17,E20,E23,E26,I10,I12,I14,I16,M10,M12,M14,M16,M19,M22").Select 
Selection.Copy 
Sheets("Activities").Select 
If Sheets("Activities").Range("A9") = "" Then 
    Sheets("Activities").Range("A9").PasteSpecial Paste:=xlPasteValues 
Else 
    Sheets("Activities").Range("A10").Select 
    Selection.End(xlUp).Select 
    ActiveCell.Offset(1, 0).Select 
    Selection.PasteSpecial Paste:=xlPasteValues 
End If 

末次

但它工作不正常,我還沒有設法找出A + 1。

任何幫助?

感謝

回答

0

首先,你應該避免Select聲明,如果它不是必需的(它會引發不必要的事件等)。

我的做法是:

Dim rng As Range 
Set rng = Sheets("Novo Pedido").Range("B2,B3,B4,B5,B6,A10,A16,A21,A24,E10,E17,E20,E23,E26,I10,I12,I14,I16,M10,M12,M14,M16,M19,M22") 

For Each cell In rng 
    'here you copy to another sheet, one row lower 
    Sheets("Geral").Cells(cell.Row + 1, cell.Column).Value = cell.Value 
Next cell 
+0

哇,這也幾乎在所有簡單的伎倆!非常感謝! 唯一的解決方法是:它將每個單元格放在同一列的新行中。 我在試圖將所有的單元格放在同一行,但每次單擊按鈕時,它會創建一個新行。 我可以理解嗎? 再次感謝 – DONSTEPHZ

+0

嗯,你可以創建一些全局整數,我們稱之爲'numberOfClicks',每次單擊按鈕時它會遞增1(它會在click事件處理程序中執行遞增)。然後只需使用它:'cell.Row + numberOfClicks'。 –

相關問題