Найти фамилию в столбце - PullRequest
0 голосов
/ 25 марта 2019

Я настраиваю некоторые VBA для автоматической отправки электронных писем, но не могу определить диапазон правильно.Мне нужно, чтобы диапазон остановился на последней заполненной строке в столбце B.

Я пытался;

For Each cell In ws.Range("B2", Selection.End(xlDown))

For Each cell In ws.Range("B2", ("b" & Cells.Rows.Count).End(xlUp))

Вторая строка не работает, но верхняя строка выбирает все ячейки в столбцеB, если в столбце B. есть только одно или два сообщения электронной почты.

Код ниже;

Range("B3").Select

Dim objOutlook As Object
Dim objMail As Object
Dim ws As Worksheet

Set objOutlook = CreateObject("Outlook.Application")
Set ws = ActiveSheet
For Each cell In ws.Range("B2", Selection.End(xlDown))
  Set objMail = objOutlook.CreateItem(0)
  With objMail
    .To = cell.Value

Мне нужно, чтобы диапазон останавливался на последней заполненной строке в столбце B, независимо от того, сколько строкесть данные.

1 Ответ

0 голосов
/ 25 марта 2019

Вы только что получили синтаксическую ошибку.Попробуйте использовать

For Each cell In ws.Range("B2", ws.Range("B" & ws.Cells.Rows.Count).End(xlUp))

Использование End(xlDown) остановит первую найденную пустую ячейку.Это может быть хорошо, но если у вас есть пробелы в ваших данных, он пропустит что-нибудь после первой пустой ячейки.Поэтому лучше использовать End(xlUp), так как это позволит найти первую заполненную ячейку перед нижней частью столбца, избегая пропуска любых ваших данных.

...