访问 msgbox 是 否 选择报告 - 打开错误的报告?

Posted

技术标签:

【中文标题】访问 msgbox 是 否 选择报告 - 打开错误的报告?【英文标题】:Access msgbox Yes No to Choose Report - Opening Wrong Report? 【发布时间】:2017-06-26 12:23:24 【问题描述】:

我设置了以下简单代码,以选择报告是否应显示“排除”组。

 Private Sub cmdRptWorktypesByGroups_Click()
     Dim rptExclYN As String

     rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbclrf & " or without excluded practice groups (No)?", vbYesNo, "Choose Report With or Without excluded groups")

     If rptExclYN = Yes Then
         DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport
     Else
         DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport
     End If

 End Sub

这是我的代码。它应该是完全直截了当的。问题是,当用户单击是时,它会打开 rptWorkTypebyGroupsNoExcl 报告。当我单击否时,它仍会打开相同的报告。谁能告诉我可能做错了什么?

我最初有 rptWorkTypebyGroups 报告,带有查询记录源。我复制了该报告,将副本重命名为 rptWorkTypebyGroupsNoExcl,并将其记录源查询保存为自己的名称。我不知道为什么消息框没有打开正确的报告。有人可以帮忙吗?

谢谢!

【问题讨论】:

【参考方案1】:

MsgBox() 函数返回一个 VbMsgBoxResult 值(一个整数),而不是一个字符串。

由于您显然没有启用 Option Explicit,Yes 被创建为新的空 Variant,因此无论您选择什么,您的 If 条件将始终为 false。

Option Explicit 放在每个模块的顶部。 它强制执行变量声明并在编译时报告未声明或拼写错误的变量/常量。 要在新模块中自动启用此功能,请在 VBA 编辑器中设置 Require Variable Declaration 选项。

正确代码:

Private Sub cmdRptWorktypesByGroups_Click()

     Dim rptExclYN As VbMsgBoxResult 

     rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbCrLf & " or without excluded practice groups (No)?", vbYesNo, "Choose Report With or Without excluded groups")

     If rptExclYN = vbYes Then
         DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport
     Else
         DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport
     End If

End Sub

编辑:这是vbCrLf,而不是vbclrf。 Option Explicit 会捕获的另一个。

【讨论】:

谢谢!感谢您抽出宝贵时间给我其他建议。【参考方案2】:

我是个白痴。我说的是 rptExclYN = Yes 而不是 rptExclYN = vbYes。我的错。这是有效的简单代码:

Dim rptExclYN As Variant

rptExclYN = MsgBox("Would you like this report with excluded groups (Yes)" & vbCrLf & _
" or without excluded groups (No)?", vbYesNo, "Choose Report With or Without Excluded Groups")

If rptExclYN = vbYes Then
    DoCmd.OpenReport "rptWorkTypebyGroups", acViewReport
ElseIf rptExclYN = vbNo Then
    DoCmd.OpenReport "rptWorkTypebyGroupsNoExcl", acViewReport
End If

希望这对其他人有所帮助,因为那样就意味着我不是唯一一个缺少简单事物的人。

【讨论】:

不过,你应该像@Andre 向你展示的那样Dim rptExclYN

以上是关于访问 msgbox 是 否 选择报告 - 打开错误的报告?的主要内容,如果未能解决你的问题,请参考以下文章

VBScript MsgBox 总是报告错误。我需要在计算机上安装啥库?

VBA - 在 msgbox 之后返回用户窗体

VBA编程中MsgBox函数怎么用

权限被拒绝:'Msgbox'

vb6.0 怎么把msgbox设置成有是、否、取消三个按钮呢,菜鸟路过,求帮助。代码又是怎么写的呢??

MsgBox 确认退出 Access 中的表单