Доброго дня, позвольте спросить. Написал небольшую функцию в VBA. Я только начал вариться в кодинге. Функция работает и копирует нужные диапазон, но почему то возвращает в строку адреса значений "-1" (при некоторых изменениях true ). Я так понял так как возвращается значение типа Range, а нужно string. Значение берутся из нескольких ячеек (адреса почты). Как мне вернуть в строку адреса аутлук значение из 2-5 ячеек?
хотелось бы в строку ".To = " вбивать значение из нескольких ячеек(конкретон то, которое я выделил функцией) или скопировал, преобразовал в массив, это не важно, просто я не понимаю как лучше. У меня есть вариант возвращаться функцией значение Range, а затем преобразовывать в строку или массив, как это сделать я правда не знаю. ужно передать в функцию строку, а получить обратно диапазон, который можно вставить в строку адреса в outlook.
Я пробовал так же переносить в хтмл, открывать как txt и переносить в строку, но там кеся меся из хтмл разметки, видимо надо формат определить как и для тела сообщения.
Так же пробовал создавать временный текстовый документ, переносить в него все. затем из него все копировать в нужную мне строку, но заблудился в синтаксисе и встал
итог: я функцией методом select или copy(как угодно) обозначил диапазон. Как мне его из функции вызвать в процедуре и засунуть в адрес получателя. Значение обычно от 3-6. Помогите пожалуйста.
Код |
---|
Private Sub Send_Mail()
Dim objOutlookApp As Object, objMail As Object
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
On Error GoTo 0
'создаем сообщение
With objMail
.To = otvetvstvenie("value")
.CC = _
"inbox@mail.ru; seraga@mail.ru"
.Subject = _
"тема сообщения"
.BodyFormat = 2 'olFormatHTML - формат HTML
.HTMLBody = _
"Добрый день, направляю дедлайны." & "ConvertRngToHTM(Selection)"
.display 'отображаем сообщение
End With
Set objOutlookApp = Nothing: Set objMail = Nothing
Application.ScreenUpdating = True
End Sub
Function otvetvstvenie(bank As String)
Dim lLastRow As Long, bank As String
lLastRow = Cells(Rows.Count, 4).End(xlUp).Row
Application.Workbooks("Ответственные.xlsx").Sheets("Лист1").Activate
Range("C4").AutoFilter Field:=2, Criteria1:=bank
Range("F5" & ":F" & lLastRow).Copy
End Function |