Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提示用户进行选择的VBA代码_Vba_Ms Access_Beforeupdate - Fatal编程技术网

提示用户进行选择的VBA代码

提示用户进行选择的VBA代码,vba,ms-access,beforeupdate,Vba,Ms Access,Beforeupdate,我有一些VBA代码,询问用户在MS Access中关闭表单之前是否希望保存记录。这是代码的样子: Private Sub Form_BeforeUpdate(Cancel As Integer) Dim ctl As Control On Error GoTo Err_BeforeUpdate If Me.Dirty Then If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _

我有一些VBA代码,询问用户在MS Access中关闭表单之前是否希望保存记录。这是代码的样子:

Private Sub Form_BeforeUpdate(Cancel As Integer)


   Dim ctl As Control

   On Error GoTo Err_BeforeUpdate


   If Me.Dirty Then

      If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _
              "Save Record") = vbNo Then
         Me.Undo
      End If
   End If

Exit_BeforeUpdate:
   Exit Sub

Err_BeforeUpdate:
   MsgBox Err.Number & " " & Err.Description
   Resume Exit_BeforeUpdate
End Sub
我还想在上面后面添加另一个消息框,询问用户是否希望“将记录复制到分析和支持表?”。如果是,那么我希望代码运行名为“Insert\u query”的已保存查询。如果没有,则转到新记录

在编写VBA时,我几乎没有经验,因此需要帮助


有人能帮忙吗?

如果您希望只有在他们同意保存记录时才会显示消息,那么

If MsgBox("Do you want to save?", vbYesNo + vbQuestion, "Save Record") = vbNo Then
    Me.Undo
Else
    If MsgBox("Copy the record to the Analysis & Support Table?", vbYesNo + vbQuestion, "Copy Record") = vbYes Then
        CurrentDb.Execute("Insert_Query")
    Else
        'go to new record
    end if
End If

如果您希望无论选择第一个消息框都显示消息,则

If MsgBox("Do you want to save?", vbYesNo + vbQuestion, "Save Record") = vbNo Then
    Me.Undo
End If
If MsgBox("Copy the record to the Analysis & Support Table?", vbYesNo + vbQuestion, "Copy Record") = vbYes Then
    CurrentDb.Execute("Insert_Query")
Else
    'go to new record
end if

谢谢你拆散了2。实际上,选择第一个选项对我来说更有意义。我已经运行了…一切似乎都正常。但它似乎在问我是否想存两次钱?你知道怎么解决吗?带有
MsgBox
“你想保存吗?”
显示两次?或者两个不同的
MsgBox
,因为后者是专用的。带有
MsgBox
“是否要保存?”
弹出,然后我点击save,然后再次弹出…要测试,请放置一些
调试。打印
语句或使用调试器单步执行,查看它在什么时候重复。i、 如果整个函数是重复的,或者只是一个特定的部分。如果您正在执行我的操作。撤消,我相信这将重新启动Form_BeforeUpdate函数,因为您正在更新表单数据。可能需要将其放入另一个函数中。