我正在设置一些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列最后填充的行处停下来。
答案 0 :(得分:0)
您刚刚遇到语法错误。尝试使用
For Each cell In ws.Range("B2", ws.Range("B" & ws.Cells.Rows.Count).End(xlUp))
使用End(xlDown)
将在找到的第一个空单元格处停止。可以,但是如果您的数据中有任何空白,则在第一个空单元格之后它将丢失任何内容。因此,最好使用End(xlUp)
,因为这会在列底部之前找到第一个填充的单元格,从而避免丢失任何数据。