在栏中查找姓氏

时间:2019-03-25 11:19:35

标签: excel vba outlook

我正在设置一些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 :(得分:0)

您刚刚遇到语法错误。尝试使用

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

使用End(xlDown)将在找到的第一个空单元格处停止。可以,但是如果您的数据中有任何空白,则在第一个空单元格之后它将丢失任何内容。因此,最好使用End(xlUp),因为这会在列底部之前找到第一个填充的单元格,从而避免丢失任何数据。