マクロの取り消しはできる?
マクロの難点は、簡単にCtrl+Zで取り消しでききないことですね。
でも、ある程度簡単なことでしたら、取り消しできます。
別マクロで取り消し動作を書いてあげればいいのです。
回答が終了になっていましたが、ここで要望のことができるプログラムを掲載しておきます(ソースの一部は質問部分から流用)。
●ポイント
- 前の値をUndoで持ってくる
- Application.EnableEventsで変更したときにChangeイベントが発生しないようにする(Undoのとき、元に戻すマクロを動かしたとき)
- セーブしておく場所は標準モジュール側に記載しておく
●Sheet1側
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim intColor As Integer Dim celColor As Integer Dim NowVal As Variant If Target.Count > 1 Then Exit Sub If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub intColor = 0 Select Case Target.Value Case Is = "あ" intColor = 1 celColor = 2 Case Is = "い" intColor = 1 celColor = 2 Case Is = "う" intColor = 1 celColor = 3 Case Is = "え" intColor = 1 celColor = 4 Case Is = "お" intColor = 1 celColor = 5 End Select If intColor <> 0 Then NowVal = Target.Value Application.EnableEvents = False Application.Undo OrgVal = Target.Value Target.Value = NowVal Application.EnableEvents = True ActiveCell.Offset(1, 0).Activate Set OrgTarget = Target OrgintColor = Target.Font.ColorIndex OrgcelColor = Target.Interior.ColorIndex Target.Font.ColorIndex = intColor Target.Interior.ColorIndex = celColor End If End Sub
●標準モジュール側
Option Explicit Public OrgintColor As Integer Public OrgcelColor As Integer Public OrgVal As Variant Public OrgTarget As Range Sub UndoColor() OrgTarget.Font.ColorIndex = OrgintColor OrgTarget.Interior.ColorIndex = OrgcelColor Application.EnableEvents = False OrgTarget.Value = OrgVal Application.EnableEvents = True End Sub