types不匹配VBA无法find

我有最后得到了一些工作代码,但我得到一个“types不匹配”的错误,一旦Module2函数完成,我不知道为什么。

如果我通过它,它逐步通过模块2“结束function”,然后我得到一个types不匹配,但它确实发送电子邮件。 任何帮助将是伟大的

这个VBA代码分为三部分。

1 Sub

Sub Workbook_open() Call Module1.GetData End Sub 

2模块1

  Public EmailAddress As String Public CompanyNumber As String Public Name As String Public GroupComp As String Function GetData() Dim LastRow As String Dim rng As Range LastRow = Cells(Rows.Count, "K").End(xlUp).Row For Each rng In Range("K2:K" + LastRow) If Not rng.Value = vbNullString Then Select Case rng.Value Case 1 Case Is = "True" Let EmailAddress = ActiveCell.Offset(0, -5).Value Let CompanyNumber = ActiveCell.Offset(0, -9).Value Let Name = ActiveCell.Offset(0, -8).Value Let GroupComp = ActiveCell.Offset(0, -7).Value Call Module2.Email(EmailAddress, CompanyNumber, Name, GroupsComp) Case 2 Case Is = "False" End Select End If Next End Function 

3模块2

  Function Email() 'MsgBox (EmailAddress) Set objMessage = CreateObject("CDO.Message") objMessage.Subject = "Stuffl " & (GroupComp) objMessage.From = "Department Name(Department@Email.com)" objMessage.Cc = "Department Name(Department@Email.com)" objMessage.To = (EmailAddress) MsgBox (EmailAddress) objMessage.TextBody = "TEST" objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxxx" objMessage.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objMessage.Configuration.Fields.Update objMessage.Send End Function 

Function Email()更改为

 Function Email(emailaddress As String, companynumber As String, name As String, groupscomp As String) 

你实际上没有调用邮件function,这是我想的问题

“我不明白为什么我必须再次在邮件中指定variables”

无论何时将值传递给子或函数,都必须定义该子或函数,以便期望将值传递给它。 所以这不起作用:

 Sub Foo() Dim i as Integer i = 5 Call Bar(i) End Sub Sub Bar() i = i + 2 End Sub 

因为Bar()不期望有任何东西传递给它。 这将工作:

 Sub Foo() Dim i as Integer i = 5 Call Bar(i) End Sub Sub Bar(i as Integer) i = i + 2 End Sub 

因为你现在告诉Bar期望一个整数被传递给它。

希望有所帮助。