Невозможно найти несоответствие типа VBA

У меня наконец-то появился какой-то рабочий код, но я получаю ошибку типа «несоответствие типа», когда функция Module2 заканчивается, и я понятия не имею, почему.

Если я пройду через него, он пройдет через «Конечную функцию» на модуле2, затем я получу несоответствие типа, но он отправит электронное письмо. Любая помощь будет отличной

Этот код 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([email protected])" objMessage.Cc = "Department Name([email protected])" 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) 

Вы на самом деле не вызываете функцию Mail, это проблема, я думаю

«Я не понимаю, почему мне пришлось снова указывать переменные в почте»

Всякий раз, когда вы передаете значения Sub или Function, вы должны определить эту Sub или Function так, чтобы она ожидала передачи значений. Так что это не сработает:

 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 

Потому что вы теперь сказали Бару ожидать, что целое число будет передано ему.

Надеюсь, что это помогло.

Давайте будем гением компьютера.