【发布时间】:2021-05-28 16:34:09
【问题描述】:
我正在使用 MS Access 2016、Windows 10、运行 SDC 的 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
【问题讨论】:
-
错误是类型不匹配,在不处于中断模式时确实有效。所以这个函数不是问题,除了它是一个替换密码,它分解各种数据元素并将它们重新分配给 Alpha 字符。我不想发布该代码,所以不,我不会提供,它与手头的问题无关。
-
如果看到从即时窗口调用的自定义函数不起作用。与如何声明参数变量有关。至少显示 UnlockCode 函数的声明行。当设置了断码时,我也有一些程序无法正常工作,或者相反 - 我忘记了这么久没有遇到过。
-
我做了,公共函数 UnlockCode(ByVal CACID as String) As String。我不使用引用 CACID 的其他分配。我为 CACID 的每个数字分配了 10 个字符串。但是所有类型的数据都匹配为字符串。
-
那么当我手动分配字符串值并使用该值调用函数时,为什么它会在即时窗口中工作?
-
好的,我查看了您之前的帖子并删除了断点,但执行同样的错误仍然失败。现在仍然处于中断模式,即时窗口中的函数仍然返回错误。观察窗口中的变量 trgt_CACID = "1234567890"。我退出中断模式重置所有变量并手动将 trgt_CACID 变量重新分配给“1234567890”,该函数工作正常。它正确地返回生成的代码。
标签: ms-access