程序中用了很多Public数组,下面是结束时的源程序:
Private Sub Form_Unload(Cancel As Integer)
        If MsgBox("要结束程序吗?", vbQuestion + vbYesNo + vbDefaultButton2, Me.Caption) <> 7 Then
            End
        Else
            Cancel = 1
        End If
    End If
End Sub

解决方案 »

  1.   

    把所有的窗体全部关上:
    If MsgBox("确定退出本系统吗?", vbQuestion + vbYesNo, "退出系统") = vbYes Then
      For Each Form In Forms
      Unload Form
      Next Form
    End If
      

  2.   

    单看你的代码没什么问题,主要的原因应该在其他地方。
    你最好 把End 换成 Unload  me
    set Form = nothing
      

  3.   

    程序结束的时候需要释放所占用的内存空间,用End结束程序之前你最好手动的把模块级变量释放掉,这样调试的时候可以节省不少时间。如果你的数组使用诸如Dim MyArray() As Long之内的方法动态定义的,在结束程序之前用Erase方法将数组释放掉就行了。
      

  4.   

    Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim ExitMsg As String
    ExitMsg = MsgBox("退出系统?", vbInformation + vbYesNo, "退出")
        If ExitMsg = vbYes Then
            Cancel = 0
        Else
           Cancel = 1
        End If
    End Sub应该放在QueryUnload事件中