【发布时间】:2017-07-11 08:19:45
【问题描述】:
由于在 MS access 中的多个表单上经常使用同一个消息(即错误注释),我考虑将所有消息组织在一个表中并使用公共函数调用它们:
Public Function message(msg_name As String, Optional msg_type As VbMsgBoxStyle)
output = MsgBox DLookup("Msg_Text", "vba_msg", "Msg_Name='" & msg_name & "'"), _
msg_type, _
DLookup("Msg_Caption", "vba_msg", "Msg_Name='" & msg_name & "'")
简单明了。很好地处理简单的通知(当然,“输出=”和括号不是必需的)。但是,我不能在 Select Case 上下文中使用这些消息:
Select Case message("test_message_name", vbYesNo)
Case vbYes
MsgBox "Yes"
Case vbNo
MsgBox "No"
End Select
按“是”或“否”都不会被识别为这样。如果我也定义“Case Else”,我只会得到回应。 如果我在同一个 Sub 中执行相同的程序,一切正常:
output = MsgBox DLookup("Msg_Text", "vba_msg", "Msg_Name='" & "test_message_name" & "'"), _
msg_type, _
DLookup("Msg_Caption", "vba_msg", "Msg_Name='" & "test_message_name" & "'")
Select Case output
Case vbYes
MsgBox "Yes"
Case vbNo
MsgBox "No"
End Select
我错过了什么吗?
【问题讨论】:
-
哦,差点忘了,你的命名也有点不一致:
Optional ms_type是msg_type,而output从未被声明过。尝试打开Option Explicit以更轻松地发现这些错误(打开它,您将得到它们的编译错误)。 -
啊,谢谢。 “ms_type”实际上是一个错字。我没有从 Access 复制粘贴,而是再次将代码写下来。
标签: vba function ms-access select msgbox