Excel総合相談所 55

このエントリーをはてなブックマークに追加
744名無しさん@そうだ選挙にいこう
>>742 感じがよかったのでちょっと凝ったものをプレゼント
『my履歴』っていう名前のシートを作ったあと
VBを開いて(alt + F11)、入力するシートの所に下のコードを張れば、
A1を変更するたびにB1に加算+my履歴に日付と値が入ります
なお、当日中に再変更した場合、前日のデータから計算しなおします。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim mydaterng As Range
  If Target.Row <> 1 Then Exit Sub
  If Target.Column <> 1 Then Exit Sub
  If MsgBox("変更した値をB1に加算しますか?", vbYesNo, "確認") <> vbYes Then Exit Sub
  Set mydaterng = ThisWorkbook.Sheets("my履歴").Cells(65536, 1).End(xlUp)
  If mydaterng.Value = Date Then
    If MsgBox("本日の変更をやり直しますか?", vbYesNo, "確認") <> vbYes Then Exit Sub
    Range("b1").Value = mydaterng.Offset(-1, 1).Value + Target.Value
    mydaterng.Offset(0, 1).Value = Range("B1").Value
  Else
    Range("b1").Value = Range("b1").Value + Target.Value
    mydaterng.Offset(1, 0) = Date
    mydaterng.Offset(1, 1) = Range("B1").Value
  End If
End Sub