Как выбрать диапазон ячеек вместо 2 ячеек для переменной strBody? - PullRequest
0 голосов
/ 08 октября 2019

Окно просмотра VBA показывает «несоответствие типов» и значение «Пусто» для значений. strBody Переменная и значение при запуске этого сценария. Я подтвердил, что электронная часть этого скрипта работает. Я просто не могу выбрать диапазон ячеек, которые я хочу. Справка?

Я бы хотел выбрать диапазон для переменной strBody.

Если я заменим переменную strBody на следующую, все будет работать:

strBody = Str(Sheet1.Cells(1, 1)) & Str(Sheet1.Cells(1, 2))

Sub send_email()
Dim NewMail As Object
Dim MailConfig As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As Variant

strSubject = "Mail from Excel"
strFrom = "email@gmail.com"
strTo = "email@gmail.com"
strCc = ""
strBcc = ""
strBody = Str(ActiveWorkbook.Sheets("Sheet1").Range("A1:B2"))

1 Ответ

0 голосов
/ 08 октября 2019

Не видя ваших данных, вы можете рассмотреть возможность создания UDF:

...
strBody = build_body(ActiveWorkbook.Sheets("Sheet1").Range("A1:B2"))
End Sub

Function build_body(rng As Range, Optional delimiter As String = " ") As String
Dim cel As Range
Dim tmpStr As String
For Each cel In rng.Cells
    If tmpStr <> "" Then tmpStr = tmpStr & delimiter & cel.Value
    If tmpStr = "" Then tmpStr = cel.Value
Next cel
Debug.Print tmpStr
build_body = tmpStr
End Function

С примерами данных:

enter image description here

Выходы: A1, B1, A2, B2.

Выполнение Str(Sheet1.Cells(1, 1)) & Str(Sheet1.Cells(1, 2)) приведет к выводу A1B1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...