Vba 停止msgbox OK关闭文本输入

Vba 停止msgbox OK关闭文本输入,vba,msgbox,Vba,Msgbox,压力过大的经理试图解决组织CRM中的问题 我们设置了一个宏来向客户端发送“临时”文本消息。文本输入的字符限制为160,如果超过该限制,将弹出一个msgbox,告诉您将文本减少x个字符 当你点击OK时,它会关闭整个输入框(因此你必须重新键入一个新的较短版本的原始消息) 我如何设置它,以便如果您超过字符限制,它会告诉您,然后给您返回并删除几个字符的机会 这是我认为相关的代码部分: set msgEntryDlg = CreateDialog("Adhoc SMS") set msgTxtCtl =

压力过大的经理试图解决组织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
set msgEntryDlg=CreateDialog(“临时短信”)
设置msgTxtCtl=msgEntryDlg.AddControl(“SMS消息:”,2“”)
如果不是msgEntryDlg,则执行
Msgbox“消息已取消!”
出口接头
如果结束
mail_message=msgTxtCtl.Text
mail\u message=“”+mail\u message
如果Len(mail_message)<1,则
MsgBox“消息为空,请输入消息!”
出口接头
如果结束
如果Len(邮件)>160,则
MsgBox“消息太长,请减少”&(len(mail_Message)-160)和“字符数”。4112
出口接头
如果结束
我想这和一个循环有关。。。但我不知道


提前感谢。

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

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
Dim success作为布尔值
做
设置msgEntryDlg=CreateDialog(“临时短信”)
设置msgTxtCtl=msgEntryDlg.AddControl(“SMS消息:”,2“”)
如果不是msgEntryDlg,则执行
MsgBox“消息已取消!”
退出Do
如果结束
mail_message=msgTxtCtl.Text
mail\u message=“”+mail\u message
如果Len(mail_message)<1,则
MsgBox“消息为空,请输入消息!”
如果结束
如果Len(邮件)>160,则
MsgBox“消息太长,请减少”&(Len(mail_Message)-160)和“字符数”。4112
如果结束
成功=正确
循环直到成功

如果需要重复操作直到满足条件,请在每个循环结束时检查条件。请注意,取消退出的是
Do
,而不是

感谢您的帮助-我刚刚插入了它(替换了我发布的全部代码),现在在尝试执行它时收到一条错误消息:“sub/function中的预期语句结束…”(其余部分有点中断,但它提到了第42行,这是新代码的开始).有什么想法吗?@Kristina我需要看看剩下的代码来集成循环。