Я начинаю в Excel VBA и хотел бы помочь.Excel VBA - проверить, выбраны ли флажки и объединить соответствующие значения текстовых полей
В пользовательской форме для регистрации клиентов у меня есть раздел «контакты», который будет зарезервирован для получения до пяти контактных писем для зарегистрированного клиента. В этом UserForm у меня есть следующие объекты:
- 5 текстовых полей (
txtEmail1
,txtEmail2
,txtEmail3
, ...) - 5 Флажки (
ckboxEmail1
,ckboxEmail2
,ckboxEmail3
, ...) - 1 CommandButton (
bSendEmail
)
Письмо будет набрано в текстовых полях и кнопка будет использоваться для открытия Outlook, приложения с уже в поле «Кому» писем. Флажки будут использоваться для определения того, какие письма будут включены в поле «Кому».
Вот мои сомнения. Как проверить, какие флажки отмечены, использовать (конкатенировать) только их электронные письма из текстовых полей?
Практический пример 1:
TxtEmail1.value = [email protected]
TxtEmail2.value = [email protected]
TxtEmail3.value = empty
TxtEMail4.value = [email protected]
TxtEMail5.value = empty
CkboxEmail1.value = true
CkboxEmail2.value = true
CkboxEmail3.value = false
CkboxEmail4.value = true
CkboxEmail5.value = false
Когда я нажать на кнопку, следующий массив должен быть передан в собственность ".то":
.To = "[email protected];[email protected];[email protected]"
Практический пример 2:
TxtEmail1.value = [email protected]
TxtEmail2.value = [email protected]
TxtEmail3.value = empty
TxtEMail4.value = [email protected]
TxtEMail5.value = empty
CkboxEmail1.value = false
CkboxEmail2.value = false
CkboxEmail3.value = false
CkboxEmail4.value = true
CkboxEmail5.value = false
Когда я нажимаю кнопку, только 4-е письмо будет передано в свойство «.To», потому что только оно s checkbox is true:
.To = "[email protected]"
Bellow - это код, который я использую для открытия приложения Outlook в событии bSendEmail Click.
Private Sub bSendEmail_Click()
Dim outlookApp As Object
Dim outlookMail As Object
On Error GoTo error_outlook
Set outlookApp = CreateObject("Outlook.Application")
Set outlookMail = outlookApp.CreateItem(0)
On Error GoTo 0
On Error Resume Next
With outlookMail
.To = ""
.CC = ""
.BCC = ""
.Subject = ""
.Body = ""
.Importance = 2
.Display
End With
On Error GoTo 0
Set outlookMail = Nothing
Set outlookApp = Nothing
Exit Sub
error_outlook:
MsgBox("some message here...", vbOKOnly + vbExclamation, "ERROR - Outlook")
Exit Sub
End Sub
Спасибо заранее и сожалею о плохом английском, это не мой родной язык.
Спасибо за быстрый ответ! Что касается флажков, код работал отлично (большое спасибо), но я не знаю, почему Excel игнорирует точку с запятой. Результат в поле «Кому» Outlook выглядит следующим образом: 'email1 @ example.comemail2 @ example.comemail4 @ example.com' Письма не разделяются точками с запятой. –
@IgorSousa Ahh - Возможно, объект 'outlookMail' автоматически отключает любые завершающие'; '. Я буду редактировать код, чтобы использовать временную переменную. – YowE3K
Ты потрясающий! Это сработало, спасибо вам большое! –