|
マクロを実行した日を入力するマクロが実行できなくて困っています。
シート1(台帳)に以下のような帳票があります。
A列 B列 C列 D列
1
2 販売数 販売先 品 名 在庫数
--------------------------------------------
3 1 A社 AAA 10
--------------------------------------------
4 BBB 8
--------------------------------------------
5 2 B社 CCC 7
--------------------------------------------
以下 続く
1行目にはコマンドボタンがあります。
ボタンでこの表の販売数に数を入力した行をシート1から削除します。
が、念のためシート2(削除一覧)にマクロ実行日とともに残そうと思っています。
シート2はこんな感じです。
A列 B列 C列 D列
1 販売日 販売先 品 名 販売数
-------------------------------------------------
2 マクロ実行日 A社 AAA 1
-------------------------------------------------
3 マクロ実行日 B社 CCC 2
-------------------------------------------------
これより下は過去の削除データが記録されている。
考えたマクロは以下のとおりです。
Private Sub CommandButton1_Click()
Dim Choice As Integer
Dim Msg1 As String
Dim Msg2 As String
Dim Msg3 As String
Dim i As Long
Dim j As Long
Msg1 = "販売数に入力された数が台帳より削減されます。"
Msg2 = "数量がゼロになった物品は行ごと削除されます。"
Msg3 = "処理を続けますか?"
Choice = MsgBox((Msg1 & vbCrLf & Msg2 & vbCrLf & "" & vbCrLf & Msg3), vbYesNo + vbExclamation, ("注意"))
Select Case Choice
Case vbYes
With Sheets("台帳")
.Select
On Error Resume Next
Range("A3:A65536").SpecialCells(xlCellTypeConstants).EntireRow.Copy
End With
With Sheets("削除一覧")
.Range("2:2").Insert
.Columns("A:D").EntireColumn.AutoFit
End With
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Sheets("削除一覧").Cells(i, 4) = Sheets("削除一覧").Cells(i, 1)
Sheets("削除一覧").Cells(i, 1) = Format(Now(),"yyyy/mm/dd)
Next
With Sheets("台帳")
.Select
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 4) = Cells(i, 4) - Cells(i, 1)
Next
For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row
Range(Cells(i, 1), Cells(i, 2)).ClearContents
Next
For j = Cells(Rows.Count, 3).End(xlUp).Row To 3 Step -1
If Cells(j, 4).Value = 0 Then Cells(j, 4).EntireRow.Delete
Next
End With
Case vbNo
Sheets("台帳").Select
End Select
End Sub
このマクロの
「Sheets("削除一覧").Cells(i, 1) = Format(Now(),"yyyy/mm/dd)」
の部分が上手くできず止まってしまいます。
よろしくお願いします。
あわせて、A列に何も入力しない状況でボタンをおすと、
シート2に空白行が挿入されてしまいます。
こうならない方法もあわせて教えてください。
|
|