Стоп msgbox ОК закрытие ввода текста - PullRequest
0 голосов
/ 28 августа 2018

Утомленный менеджер пытается решить проблему в нашей организационной CRM.

У нас есть макрос, настроенный для отправки текстовых сообщений «ad hoc» клиентам. Максимальное количество символов для ввода текста составляет 160, и если вы превысите его, появится окно с сообщением, сообщающее вам уменьшить текст на 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

Я думаю, что это как-то связано с циклом ... но я ничего не понимаю!

Заранее спасибо.

1 Ответ

0 голосов
/ 28 августа 2018

Не проверено, но я думаю, что вы ищете что-то вроде этого:

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.

...