停止msgbox,确定关闭文本输入

时间:2018-08-27 23:35:37

标签: vba msgbox

压力很大的经理试图解决我们组织CRM中的问题。

我们设置了一个宏,用于向客户端发送“临时”文本消息。文本输入的字符数限制为160,如果超出该限制,则会弹出一个消息框,告诉您将文本减少x个字符。

单击“确定”时,它会杀死整个输入框(因此您必须重新键入原始消息的新的较短版本)。

我该如何设置它,如果您超出字符数限制,它会告诉您,然后使您有机会返回并删除一些字符?

这是我认为相关的代码部分:

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

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

谢谢。

1 个答案:

答案 0 :(得分:1)

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

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