2016-01-11 6 views
0

Я пишу макрос, который смотрит на адрес получателя, и если какое-то имя покажет сообщение vbYesNo msgbox. Однако он показывает мне msgbox при отправке мне (Aaron Islam).Проверить адрес перед отправкой

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

On Error Resume Next 
' use lower case for the address 
' LCase converts all addresses in the To field to lower case 
RecipientsName = Item.Recipients 

If RecipientsName = "Sarah Bloggs" Or "Sarah Smith" Then 

    If InStr(LCase(Item.To), "Sarah Smith" Or "Sarah Weedon") Then 
     Prompt$ = "You sending this to " & Item.To & ". Is it the correct one?" 
     If MsgBox(Prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then 
      Cancel = True 
     End If 
    End If 

Else: Exit Sub 

End If  

End Sub 
+0

Удалить после ошибки Продолжить. Ошибки будут генерироваться, чтобы вы могли их исправить. Особенно при отладке его следует удалить. – niton

ответ

0

Не используйте код ошибки, пока не знаете, как это сделать. Ошибки скрыты, поэтому вы не можете их исправить.

Option Explicit 

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 

    Dim Prompt As String 

    ' LCase converts strings to lower case 
    If InStr(LCase(Item.To), LCase("Sarah")) Then 
     Prompt = "You are sending this to " & Item.To & ". Is it the correct one?" 
     If MsgBox(Prompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then 
      Cancel = True 
     End If 
    End If 

End Sub 
0

Предположим, что ваш код для получения имени получателей работает правильно:

Не знаю, почему у вас есть два, если заявления, чтобы проверить содержимое.

Однако в обоих нужно использовать OR так:

If RecipientsName = "Sarah Bloggs" Or RecipientsName = "Sarah Smith" Then 

Вы всегда должны написать полное состояние, как:

If value1 = value2 [AND/OR value3=valu4] ... 

Подробнее о VBA If ... Затем ... Else statement on msdn: https://msdn.microsoft.com/de-de/library/752y8abs.aspx

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