vba - 停止 msgbox OK 关闭文本输入
问题描述
强调经理试图解决我们组织 CRM 中的问题。
我们设置了一个宏来向客户发送“临时”文本消息。文本输入的字符限制是 160,如果超过了,会弹出一个 msgbox 告诉您将文本减少 x 个字符。
当您点击 OK 时,它会终止整个输入框(因此您必须重新输入原始消息的新短版本)。
我该如何设置它,以便如果您超过字符限制,它会告诉您,然后让您有机会返回并删除一些字符?
这是我认为相关的代码部分:
set msgEntryDlg = CreateDialog("Adhoc SMS")
set msgTxtCtl = msgEntryDlg.AddControl("SMS Message: ",2, "")
if NOT msgEntryDlg.Execute then
Msgbox "Message cancelled!"
Exit sub
end if
mail_message = msgTxtCtl.Text
mail_message = " " + mail_message
If Len(mail_message) < 1 Then
MsgBox "Message was empty, please enter a message!"
Exit Sub
End If
If Len(mail_message) > 160 Then
MsgBox "Message is too long, please reduce by " & (len(mail_message) - 160) & " characters.",4112
Exit Sub
End If
我认为这与循环有关......但我一无所知!
提前致谢。
解决方案
未经测试,但我相信您正在寻找这样的东西:
Dim success As Boolean
Do
Set msgEntryDlg = CreateDialog("Adhoc SMS")
Set msgTxtCtl = msgEntryDlg.AddControl("SMS Message: ", 2, "")
If Not msgEntryDlg.Execute Then
MsgBox "Message cancelled!"
Exit Do
End If
mail_message = msgTxtCtl.Text
mail_message = " " + mail_message
If Len(mail_message) < 1 Then
MsgBox "Message was empty, please enter a message!"
End If
If Len(mail_message) > 160 Then
MsgBox "Message is too long, please reduce by " & (Len(mail_message) - 160) & " characters.", 4112
End If
success = True
Loop Until success
如果您需要重复某个操作直到满足某个条件,请在每个循环结束时检查该条件。请注意,取消退出的是Do
,而不是Sub
。