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

时间:2017-11-30 06:14:34

标签: excel vba excel-vba vbscript

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

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

在我的代码中,当我在输入单元格值后按Enter键时,消息框将出现并显示旧的和新的值,如下图所示。

enter image description here

但是我想在按ctrl + s键而不是按回车键或任何其他键后保存单元格值后才显示此消息框。 只有在按 Ctrl + s 保存单元格值后,消息框才会如上所示,但我无法理解这一点我

1 个答案:

答案 0 :(得分:2)

您可以将 Ctrl + s 指定给宏

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

Assign On Key Event to Macro