如何仅在使用vba在特定单元格中按Ctrl + S(保存)后显示消息框

我写了一个代码来显示一个单元格的旧值和新值,然后将消息框显示数据一个接一个地存储到另一个表格中。

Option Explicit Dim OldVals As New Dictionary Private Sub Worksheet_Change(ByVal Target As Range) Dim myCell As Range Dim sMsg As String Dim rg As Range Dim lr As Integer For Each myCell In Target If OldVals.Exists(myCell.Address) Then sMsg = "New value of " & Replace(myCell.Address, "$", "") & " is " & myCell.Value & "; old value was " & OldVals(myCell.Address) MsgBox sMsg If MsgBox(sMsg) = vbOK Then Set rg = ThisWorkbook.Sheets("Sheet2").Range("A1") lr = rg.CurrentRegion.Rows.Count rg.Offset(lr, 0).Value = sMsg Else MsgBox "No old value for " + Replace(myCell.Address, "$", "") End If OldVals(myCell.Address) = myCell.Value Next myCell End Sub 

在我的代码中,当我在input单元格值之后按回车时,消息框将会出现并显示如下图所示的新旧值。

在这里输入图像说明

但是我想要显示这个消息框后才按下ctrl + s键保存单元格的值,而不是按回车键或其他键。 只有在按下Ctrl + s来保存单元格值后,消息框才会如上所示,但是我无法想象那会帮助我。

您可以将Ctrl + s分配给macros

 Public Sub SaveWorkbook() ActiveWorkbook.Save 'Your code here End Sub 

将关键事件分配给宏