我用VBA创建了一些form给用户作某些输入,请问我怎么使当用户点窗口右上角的交叉关闭时让它检查用户时候已经保存了输入。 
我要求msgbox有是,否,取消三个按钮,点yes则则保存退出,no则直接退出,取消则回到原来的form,怎么实现? 
也就是说我该怎么写这事件的触发函数??

解决方案 »

  1.   

    Private Sub Form_Unload(Cancel As Integer)
        Dim Msg, Style, Title, Help, Ctxt, Response, MyString
        Msg = "请保存文件!"   ' 定义信息。
        Style = vbYesNoCancel + vbCritical + vbDefaultButton1   ' 定义按钮。
        Title = "保存文件!"   ' 定义标题。
        Help = "DEMO.HLP"   ' 定义帮助文件。
        Ctxt = 1000   ' 定义标题
              ' 上下文。
              ' 显示信息。
        Response = MsgBox(Msg, Style, Title, Help, Ctxt)
        If Response = vbYes Then   ' 用户按下“是”。
            MyString = "Yes"   ' 完成某操作。
            '写保存文件代码
            MsgBox "OK"
        ElseIf Response = vbNo Then ' 用户按下“否”。
            MyString = "No"   ' 完成某操作。
            End
        Else
            Cancel = -1
        End If
    End Sub
      

  2.   


    你用Unload不行,点交叉没反应,要用UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)再添加你的代码就行了,谢谢
    修改后:Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Dim Msg, Style, Title, Help, Ctxt, Response, MyString
        Msg = "Do you want to Save??"
        Style = vbYesNoCancel + vbQuestion + vbDefaultButton1
        Title = "Save Data"
        Help = "DEMO.HLP"
        Ctxt = 1000
        
        Response = MsgBox(Msg, Style, Title, Help, Ctxt)
        If Response = vbYes Then
            MyString = "Yes"
            Cancel = -1
            SaveBtn_Click
        ElseIf Response = vbNo Then
            MyString = "No"
            End
        Else
            Cancel = -1
        End If
    End Sub