【发布时间】:2018-11-20 15:30:45
【问题描述】:
我什至无法在网上找到有这个问题的人,更不用说解决方案了!
我在编写的一些 VBA 代码中有几个 msgbox,用于为调试提供反馈。过了一会儿,代码稳定了,我注释掉了 MsgBox 行。
虽然一组 msgboxes 不会消失。我什至删除它而不是删除它。最后我决定我必须以某种方式在某个地方重复,即使所有相关代码最终都调用了这个我删除了 MsgBox 的特定函数。
我看不到任何其他解释,因为我确实删除了这些代码行。我在整个项目中搜索了构成 MsgBox 文本一部分的字符串片段。 Ctrl + F,设置为搜索整个项目,尝试有无模式匹配。
我实际上什么也没找到。我决定字符串的构造必须比我想象的要复杂,而是选择在每次使用该命令时使用“MsgBox”进行搜索。我检查了每个项目文件中的每一个 MsgBox,甚至没有发现任何远程代码仍然生成的调试消息。
有人对可能发生的事情有任何其他想法吗?我最好的理论是我以某种方式隐藏或复制了某些东西,但除了贬低其代码不包含单个 MsgBox 或调用代码的表单之外,我没有做任何我能想到的事情。
我会粘贴代码,但您仍然只是相信我的话,MsgBox 不存在。
有人可以帮忙吗?它一定藏在某个地方,不知何故。
非常感谢,
MsgBox 最初出现的代码(它根据 RecordSet 的 NoMatch 属性提供反馈):
Public Function createRecordSnapshot(Table As String, dbRefIn As String, payNum As String)
Dim fieldNames As String
Dim oldDataSet As String
Dim rs As Recordset
Dim fieldCount As Integer
Dim recordTot As Integer
Dim srchString As String
Set rs = CurrentDb.OpenRecordset(Table, dbOpenDynaset)
srchString = "DBRef = '" & dbRefIn & "' and PayrollRef = '" & payNum & "'"
fieldCount = rs.Fields.Count
rs.FindFirst (srchString)
Dim o As Integer
For o = 0 To fieldCount - 1
fieldNames = fieldNames & rs.Fields(o).Name & "|"
Next o
For o = 0 To fieldCount - 1
oldDataSet = oldDataSet & rs.Fields(o).Value & "|"
Next o
createRecordSnapshot = fieldNames & vbNewLine & oldDataSet
End Function
【问题讨论】:
-
MsgBox 不会在没有代码触发的情况下出现,因此它显然在代码中的某个地方......没有向我们展示任何我们无法帮助您的代码。跨度>
-
鉴于我已经从它出现的代码部分中删除了它,我看不出它会有什么帮助。我需要一种方法来找到它藏身的地方。如果它有帮助,代码最初在这里提供有关记录集的 NoMatch 属性的反馈:
-
也许 VBA 正在调用一个宏并且它有 MessageBox Macro Action?
-
@DávidLaczkó,我用 ctrl+F 找不到,搜索整个项目搜索。也没有很多代码。
-
代码重新编译后试试(Debug菜单中有编译选项)