2016-11-05 6 views
1

Обратите внимание, что этот вопрос связан с Outlook Я любительский программист в VB в Outlook Я хочу, чтобы пользовательский ящик сообщений с заголовками кнопок как «Отправить в любом случае» и «Не отправлять».Возвратите значение из CommandButton1_Click() Sub в Outlook VBA

Но с существующим текстовым полем сообщений невозможно изменить текст.

Так что я сделал обычную форму. Теперь я хочу, чтобы возвращать логическое значение из CommandButton1_Click() Sub

Это мой основной суб называющий вид:

Public Result1 As Boolean 
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
Const MAX_ITEM_SIZE As Long = 5242880 
Result1 = True 
Dim FileSize As Long 

    For Each Item In Item.Attachments 
     FileSize = FileSize + Item.Size  
    Next 

      If FileSize > MAX_ITEM_SIZE Then 
       UserForm1.Show 
       'Cancel = True 
       Cancel = Result1 
      End If 
End Sub 

This is my code for click event handler: 

Private Sub CommandButton1_Click() 
    Unload Me 
End Sub 

Пожалуйста, посоветуйте, как достичь пользовательских заголовков на MsgBox Пуговицы в Outlook,

ответ

1

Я буду использовать Tag свойство UserForm объекта передать обратно значение от него своего призвания к югу

это означает, что вы хотите использовать UserForm Hide() метода, а затемизнутри его кода панели, чтобы не потерять свою состояния, т.е. значения все его свойства (и методы вызова),

Так что я пошел бы, как следует:

  • дать значимые имена ваша кнопка UserForm1

    , например, давайте переименовать

    • SendBtn, то Кнопка, которая имеет «Отправить» В любом случае заголовок

    • DoNotSendBtn, кнопка, которая имеет «Не Отправить» подпись

    вы можете использовать любое имя, которое вы хотите (даже CommandButton1 и CommandButton2 бы), но согласуются с выбранными именами для их соответствующих имен обработчиков событий

  • присваивает им обработчик событий следующих нажмите

    Private Sub DoNotSendBtn_Click() '<--| change "DoNotSendBtn" to your actual chosen button name 
        Me.Tag = "True" '<--| store in userform 'Tag' property the value that will be read to cancel the email sending 
        Me.Hide '<-- this will hide the userform, thus not loosing its "state" -> 'Tag' property will still be available to the calling sub 
    End Sub 
    
    Private Sub SendBtn_Click()'<--| change "SendBtn" to your actual chosen button name 
        Me.Tag = "False" '<--| store in userform 'Tag' property the value that will be read to let the email sending go on its way 
        Me.Hide '<-- this will hide the userform, thus not loosing its "state" -> 'Tag' property will still be available to the calling sub 
    End Sub 
    
  • наконец, изменить обработчик ItemSend события, как следует

    Option Explicit 
    
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
        Const MAX_ITEM_SIZE As Long = 5242880 
        Dim FileSize As Long 
    
        For Each Item In Item.Attachments 
         FileSize = FileSize + Item.Size 
        Next 
    
        If FileSize > MAX_ITEM_SIZE Then 
         UserForm1.Show '<--| show the userform 
         Cancel = UserForm1.Tag = "True" '<--| 'Cancel' will be set to 'True' if the userform TAG property value is "True", otherwise it'll be set to 'False' 
         Unload UserForm1 '<--| now unload the Userform (and loose its "state", which you don't need any more) 
        End If 
    End Sub 
    
+0

Спасибо вам, что это очень полезно –

+0

пожалуйста, вы можете направить меня в место, где я могу получить учебный материал на VB для Outlook, –

+0

I убежище В любой книге для VBA Outlook. Я только что изучил VBA для Excel, а затем пошел с онлайн-документацией Outlook, так как как только вы овладеете необходимыми средствами VBA, вы можете использовать их для каждого приложения Office, если вы просто получите соответствующую объектную модель. Но если вы Google VBA для Outlook, вы наверняка найдете столько материала, сколько никогда не сможете прочитать за всю жизнь! – user3598756

 Смежные вопросы

  • Нет связанных вопросов^_^