首页 > 解决方案 > 停止 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

我认为这与循环有关......但我一无所知!

提前致谢。

标签: vbamsgbox

解决方案


未经测试,但我相信您正在寻找这样的东西:

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


推荐阅读