Excel VBA – validation是否选中了checkbox并连接各个文本框的值

我是一名Excel VBA初学者,希望得到一些帮助。

在客户注册用户表单中,我有一个“联系人”部分,该部分将被保留以接收最多5个正在注册的客户的联系电子邮件。 在这个用户表单中,我有以下对象:

  • 5个文本框( txtEmail1txtEmail2txtEmail3 ,…)
  • 5个checkbox( ckboxEmail1ckboxEmail2ckboxEmail3 ,…)
  • 1命令bSendEmailbSendEmail

电子邮件将被input到文本框中,button将用于打开Outlook应用程序,电子邮件已经在“到”字段中。 checkbox将用于定义哪些电子邮件将包含在“收件人”字段中。

这是我的怀疑。 我如何validation哪些checkbox被选中,从文本框中只使用(连接)他们的电子邮件?

实践例1:

 TxtEmail1.value = email1@example.com TxtEmail2.value = email2@example.com TxtEmail3.value = empty TxtEMail4.value = email4@example.com TxtEMail5.value = empty CkboxEmail1.value = true CkboxEmail2.value = true CkboxEmail3.value = false CkboxEmail4.value = true CkboxEmail5.value = false 

当我按下button时,下面的数组必须被传递给“.To”属性:

 .To = "email1@example.com;email2@example.com;email4@example.com" 

实践例2:

 TxtEmail1.value = email1@example.com TxtEmail2.value = email2@example.com TxtEmail3.value = empty TxtEMail4.value = email4@example.com TxtEMail5.value = empty CkboxEmail1.value = false CkboxEmail2.value = false CkboxEmail3.value = false CkboxEmail4.value = true CkboxEmail5.value = false 

当我按下button时,只有第四封电子邮件将被传递给“.To”属性,因为只有其checkbox为真:

 .To = "email4@example.com" 

Bellow是我用来在bSendEmail Click事件中打开Outlook应用程序的代码。

 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 

预先感谢,对于英语不好,感到抱歉,不是我的母语。

更改

 .To = "" 

 Dim TempTo As String TempTo = "" If CkboxEmail1 Then TempTo = TempTo & TxtEmail1.value & ";" If CkboxEmail2 Then TempTo = TempTo & TxtEmail2.value & ";" If CkboxEmail3 Then TempTo = TempTo & TxtEmail3.value & ";" If CkboxEmail4 Then TempTo = TempTo & TxtEmail4.value & ";" If CkboxEmail5 Then TempTo = TempTo & TxtEmail5.value & ";" 

之后,可能会添加一个额外的代码,以防止未检查CkBox的问题:

 If Len(TempTo) = 0 Then MsgBox "No email addresses selected" Exit Sub End If 

最后:

 .To = TempTo