Доброго дня, позвольте спросить. Написал небольшую функцию в VBA. Я только начал вариться в кодинге. Функция работает и копирует нужные диапазон, но почему то возвращает в строку адреса значений "-1" (при некоторых изменениях true ). Я так понял так как возвращается значение типа Range, а нужно string. Значение берутся из нескольких ячеек (адреса почты). Как мне вернуть в строку адреса аутлук значение из 2-5 ячеек?
хотелось бы в строку ".To = " вбивать значение из нескольких ячеек(конкретон то, которое я выделил функцией) или скопировал, преобразовал в массив, это не важно, просто я не понимаю как лучше. У меня есть вариант возвращаться функцией значение Range, а затем преобразовывать в строку или массив, как это сделать я правда не знаю. ужно передать в функцию строку, а получить обратно диапазон, который можно вставить в строку адреса в outlook.
Я пробовал так же переносить в хтмл, открывать как txt и переносить в строку, но там кеся меся из хтмл разметки, видимо надо формат определить как и для тела сообщения.
Так же пробовал создавать временный текстовый документ, переносить в него все. затем из него все копировать в нужную мне строку, но заблудился в синтаксисе и встал
итог: я функцией методом select или copy(как угодно) обозначил диапазон. Как мне его из функции вызвать в процедуре и засунуть в адрес получателя. Значение обычно от 3-6. Помогите пожалуйста.
хотелось бы в строку ".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 |