プロが教えるわが家の防犯対策術!

エクセルマクロに関してご教示いただきたく存じます。
下記の手順を1つのマクロで実行したい場合、どのような構文を書けば実現できますでしょうか?

前提:
・エクセル中、シート(1)、シート(2)を準備。
・シート(1)には毎日1日分のデータを入力(例えば、1行目の経費項目、金額、経費支払者 の3カラムヘッダーの下に、2行目から1日分のレコードを入力していく)
・シート(2)には毎日の日別データを累積していく(例えば、シート(1)に1日目で10レコード、2日目で15レコード、3日目で20レコードの場合、3日目終了時に計45レコードにしたい。1行目の経費項目、金額、経費支払者 の3カラムヘッダーはシート(1)と同様)

マクロ実行:
・シート(1)に1日目のデータ入力(10レコード)が終わった段階で、ボタンを押し、下記マクロを実行
 ①シート(1)の10レコード(A2:C11)を、シート(2)のA2:C11にコピー
 ②シート(1)の10レコード(A2:C11)を、削除(データクリア)
・シート(1)に2日目のデータ入力(15レコード)が終わった段階で、上記と同じボタンを押し、下記のマクロを実行
 ①シート(1)の15レコード(A2:C16)を、シート(2)のA12:C26にコピー(シート(2)において1日目のデータの次に累積させていく)
 ②シート(1)の15レコード(A2:C16)を、削除(データクリア)
・シート(1)に3日目のデータ入力(20レコード)が終わった段階で、上記と同じボタンを押し、下記のマクロを実行
 ①シート(1)の20レコード(A2:C21)を、シート(2)のA27:C46にコピー(シート(2)において1日目のデータの次に累積させていく)
 ②シート(1)の20レコード(A2:C21)を、削除(データクリア)
・4日目以降、同じボタンでマクロを実行する度に、シート(1)のデータがシート(2)の47行目以降、空白なく追加されていく

以上、皆様のお知恵をお貸しください。

A 回答 (1件)

こんばんは!



>ボタンを押し・・・

Sheet1にコマンドボタンを配置しているとします。

Private Sub CommandButton1_Click()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2") '←「Sheet2」は実際のシート名に!//
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(Cells(2, "A"), Cells(lastRow, "C")).Cut wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!