访问 msgbox 是 否 选择报告 - 打开错误的报告?
Access msgbox Yes No to Choose Report - Opening Wrong Report?
我设置了以下简单代码,以选择报告是否应显示 "excluded" 组。
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,并将其记录源查询保存为它自己的名称。我不知道为什么消息框没有打开正确的报告。有人可以帮忙吗?
谢谢!
我是个白痴。我让它说如果 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
希望这对其他人有所帮助,因为这样就意味着我不是唯一一个缺少简单事物的人。
MsgBox()
函数 returns 一个 VbMsgBoxResult
值(整数),而不是字符串。
由于您显然没有打开 Option Explicit,Yes
被创建为新的空 Variant,因此无论您选择什么,您的 If 条件将始终为假。
将 Option Explicit
放在每个模块的顶部。
它强制变量声明并在编译时报告未声明或拼写错误的 variables/constants。
要在新模块中自动启用此功能,请在 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 会捕获的另一个。
我设置了以下简单代码,以选择报告是否应显示 "excluded" 组。
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,并将其记录源查询保存为它自己的名称。我不知道为什么消息框没有打开正确的报告。有人可以帮忙吗?
谢谢!
我是个白痴。我让它说如果 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
希望这对其他人有所帮助,因为这样就意味着我不是唯一一个缺少简单事物的人。
MsgBox()
函数 returns 一个 VbMsgBoxResult
值(整数),而不是字符串。
由于您显然没有打开 Option Explicit,Yes
被创建为新的空 Variant,因此无论您选择什么,您的 If 条件将始终为假。
将 Option Explicit
放在每个模块的顶部。
它强制变量声明并在编译时报告未声明或拼写错误的 variables/constants。
要在新模块中自动启用此功能,请在 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 会捕获的另一个。