首页 > 解决方案 > 中断模式和立即窗口结果不同

问题描述

我正在使用运行 SDC 的 MS Access 2016、Windows 10、USAF 笔记本电脑。

我在调试某些代码时遇到问题。当我在中断模式下打一行时,我得到一个运行时错误'13':类型不匹配,当我在中断模式之外运行完全相同的代码时,代码可以正常运行。

这是导致我出现问题的基本代码:

Private Sub btn_ReqKey_Click() 'This is not all of the code only those lines that are necessary
Dim trgt_CACID as String
Dim Temp_KeyCode as String

trgt_CACID = Me.CACID.Value  'Pulls value from short text field of "1234567890"
'Here is the issue
Temp_KeyCode = UnlockCode(trgt_CACID) 'Run-time Error '13': Type mismacth
More code
End Sub

Public Function UnlockCode(ByVal CACID as String) As String
lots of code that generates a 25 digit Alpha code
End Function

当我单击按钮时,代码在“Temp_KeyCode = UnlockCode(trgt_CACID)”处失败运行错误'13':类型不匹配。

但是,如果我重置代码执行并在即时窗口中运行它而不按下按钮。

trgt_CACID = "1234567890"
?UnlockCode(trgt_CACID)

返回正确的代码而不引发错误。所以函数 UnlockCode() 正常工作,只是在执行时没有。

此外,当按下按钮处于中断模式时,我在即时窗口中尝试相同的代码行,它返回相同的运行时错误“13”:类型不匹配。

此外,我退出中断模式,重新加载变量并执行它再次工作的同一行代码。

所以我知道执行环境中的某些东西受到了影响,我无法弄清楚那是什么。这是我第一次看到与代码执行相比,即时窗口的功能存在差异。

旁注/怪癖,当我进入函数时,助手会弹出来指导我所需的变量。当我在模块代码中键入相同内容时,不会显示帮助程序弹出窗口。太奇怪了。正确的?进一步的证据表明,这两种环境之间有些不同。

任何帮助或帮助将不胜感激。提前致谢。KO

标签: ms-access

解决方案


根据与 Erik A 和 Gustav 的讨论,我更改了与我正在使用的表字段名称发生冲突的函数名称。一旦我将所有内容更改为不同的:表字段名称、表单文本框名称和被调用的函数。一切正常。因此,显然我调用的上下文已经使用了函数的名称,并且该字段名称被拾取并发送到与该字段同名的函数。这造成了一个微妙的冲突,解释了在表和表单的上下文中执行与在即时窗口中手动调用时之间的差异,以及为什么它在即时窗口中有效,但在执行期间无效。感谢 Erik A 和 Gustav 的帮助。


推荐阅读