Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2022, 10:20   #1
Вячеслав76
Пользователь
 
Регистрация: 30.11.2020
Сообщений: 36
По умолчанию Помогите разобраться в чем ошибка

Добрый день.
Помогите понять новичку, в чем проблема)) Сразу скажу, понимаю, что ответ лежит на поверхности, но моих знаний пока не хватает. Задача. Отправить письмо указанному адресату. Три варианта.
1) отправить без визуального подтверждения.
2) отправить с контролем отправки.
3) Отменить и не отправлять.
Так вот засада в том, что при нажатии кнопки "отмена", макрос упорно продолжает отправлять адресату. Что я написал не так?)

Sub Отправка_письма()

If MsgBox(" Хотите посмотреть письмо перед отправкой?", vbYesNoCancel) = vbYes Then

Dim objOutlookApp As Object, objMail As Object

Dim sTo As String, sCC As String, sSubject As String, sBody As String, sAttachment As String

sAttachment = ""
Application.ScreenUpdating = False
On Error Resume Next

Set objOutlookApp = CreateObject("Outlook.Application")
objOutlookApp.Session.Logon
Set objMail = objOutlookApp.CreateItem(0)
If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub


sTo = ""@@@"
sCC = ""
sSubject = "Отчет"
sBody = "Привет. Лови отчет"


sAttachment = "АДРЕС ' "



With objMail
.To = sTo
.cc = sCC
.Subject = sSubject
.HTMLBody = sBody
.Attachments.Add sAttachment




.Display

End With
exit_:
Set objOutlookApp = Nothing: Set objMail = Nothing
Application.ScreenUpdating = True



Else





sAttachment = ""
Application.ScreenUpdating = False
On Error Resume Next

Set objOutlookApp = CreateObject("Outlook.Application")
objOutlookApp.Session.Logon
Set objMail = objOutlookApp.CreateItem(0)
If Err.Number <> 0 Then Set objOutlookApp = Nothing: Set objMail = Nothing: Exit Sub


sTo = "@@@@@@"
sCC = ""
sSubject = "Отчет"
sBody = "Привет. Лови отчет"


sAttachment = "АДРЕС"



With objMail
.To = sTo
.cc = sCC
.Subject = sSubject
.HTMLBody = sBody
.Attachments.Add sAttachment



.Send





End With

Set objOutlookApp = Nothing: Set objMail = Nothing
Application.ScreenUpdating = True

End If

End Sub
Вячеслав76 вне форума Ответить с цитированием
Старый 29.06.2022, 12:18   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

потому что у макроса есть только два варианта действия
Код:
If MsgBox(" Хотите посмотреть письмо перед отправкой?", vbYesNoCancel) = vbYes Then
.....
Else
......
с проверкой только одной кнопки (vbYes)
и во всех ветках есть отправка.

P.S. более одной двух веток действия как правило реализуются с помощью оператора выбора case swicth
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 29.06.2022 в 12:21.
evg_m вне форума Ответить с цитированием
Старый 29.06.2022, 13:24   #3
Вячеслав76
Пользователь
 
Регистрация: 30.11.2020
Сообщений: 36
По умолчанию

Спасибо) Буду разбираться)
Вячеслав76 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Panel из DLL(.SO) Ошибка. Помогите разобраться, Идея создать набор библиотек с виджетами kaneghost Lazarus, Free Pascal, CodeTyphon 1 26.08.2017 18:19
Помогите разобраться в коде не погу понять где ошибка wagonwils Общие вопросы C/C++ 0 23.12.2009 21:02
Помогите разобраться в чем ошибка, pasha_1 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 28.10.2008 12:14
Помогите разобраться, ошибка при считывании из ini файла XATAB Помощь студентам 4 13.02.2007 05:57