【发布时间】:2017-07-06 04:30:09
【问题描述】:
我编写了以下 VBA 代码来执行表单的一些查询,该表单带有两个文本框和一个按钮来运行相应的查询。但是,当我执行单击事件时,什么都没有发生……无论输入如何,我的查询都不会打开,即使没有输入,错误 msgbox 也不会显示。我对 VBA 和一般编码仍然很陌生,所以我可能会遗漏一些明显的东西,但我看不到任何明显的问题。在按钮上单击 debug.print 确实打印,因此正在访问代码,它只是没有做任何事情。我想这与嵌套的 If 语句,特别是查询的打开有关,但尽管谷歌搜索了多个小时,我还是无法弄清楚。
这是按钮点击事件。
Private Sub RunQ_Click()
Dim Frm As Form
Dim MdlF As TextBox
Dim PartF As TextBox
Set Frm = Forms("SearchFormParts")
Set MdlF = Forms!SearchFormParts.Controls("ModelNoF")
Set PartF = Forms!SearchFormParts.Controls("PartNoF")
Debug.Print "this code is working2"
With Forms!SearchFormParts.Controls("RunQ")
If .OnClick = "" Then
If MdlF = vbNullString Then
If PartF = vbNullString Then
DoCmd.OpenQuery ("CCModel")
Else
DoCmd.OpenQuery ("CCBoth")
End If
ElseIf PartF = vbNullString Then
If MdlF = vbNullString Then
DoCmd.OpenQuery ("CCPart")
Else
DoCmd.OpenQuery ("CCBoth")
End If
Else: MsgBox ("Please enter a value in either or both fields!")
End If
End If
End With
End Sub
谢谢你:)
【问题讨论】:
-
尽管谷歌搜索了多个小时,我还是无法弄清楚 - 但是 30 秒的 调试 会修复它。 F9 切换断点,F8 单步执行,Shift+F8 单步执行;然后你有 locals 工具窗口,immediate 窗格 (Ctrl+G)。在该
With指令上放置一个断点,运行它,然后按一次F8 进入If语句。将鼠标悬停在.OnClick标记上,你就会明白为什么下次按 F8 时执行会跳转到End If并退出程序。