2017-06-22 22 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 

End Subの

しかし、それは正しく動作していない、と私はまだ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ずつインクリメントします(クリックイベントハンドラのインクリメントを行います)。それから、単に 'cell.Row + numberOfClicks'を使うだけです。 –

関連する問題