在 
Form 的 QueryUnload 事件中加上判断即可
使用者按下 Form 的 右上角 X 时会触发这个事件
• 参数部分:Cancel 为是否要取消离开的动作 (某些视窗关不掉就有可能是 不管使用者怎么点 此项都设为 1)
UnloadMode 请参考 
知识+复制程式
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'--------------- Specify Value ----------------
Dim HasNotSaved As Boolean '纪录文字在储存后 或 刚开始后 是否已被变动
HasNotSaved = True
'----------------------------------------------
If HasNotSaved Then
    Select Case UnloadMode
    Case 1 To 3
        'Measure of Backup
    '-------------------
    Case Else
        Select Case MsgBox("尚未储存。 是否要储存目前的变更?", vbQuestion + vbYesNoCancel + vbDefaultButton1, "这不是记事本")
        Case vbYes
          'Save to Files
        Case vbNo
          'Exit Directly
        Case vbCancel
          Cancel = 1
        End Select
    '--------------------
    End Select
End If
End Sub
 以上用 HasNotSaved 模拟记事本中文字已被修改,则此项为 True
在离开时被侦测到,而 除了 UnloadMode 2~3 是不正常的关闭外(可采用备份措施)
通常都是使用者按下 X 会让 UnloadMode = 0 而就是最内层的 Select Case … End Select
最核心的程式码如下:
复制程式
        Select Case MsgBox("尚未储存。 是否要储存目前的变更?", vbQuestion + vbYesNoCancel + vbDefaultButton1, "这不是记事本")
        Case vbYes
          'Save to Files
        Case vbNo
          'Exit Directly
        Case vbCancel
          Cancel = 1
        End Select
 至于快捷键则是 预设 就有了