Excel VBA自动生成电子邮件问题

时间:2019-04-16 06:06:55

标签: excel vba do-while

我想知道下面我的代码发生了什么。 我正在尝试根据电子邮件列表自动生成电子邮件,并且可以更改列表。因此,我必须使用do直到循环(直到范围(“ A”和i)为空) auto generate email pic

我是VBA的新手,只是想学习。

Sub own()
    Dim shName As String
    Dim cell As Range
    Dim i As Integer

    i = 10
    Do Until Range("A" & i).Value = ""
       shName = Range("A" & i).Value
        ThisWorkbook.Worksheets(shName).Copy

        Application.Dialogs(xlDialogSendMail).Show cell.Offset(0, 1).Value, cell.Offset(0, 2).Value

        i = i + 1
    Loop


End Sub

错误消息是无效的过程调用或参数。 为什么? 预期结果应该能够根据列表发送电子邮件(可以更改电子邮件,因此可以使用直到循环)。

1 个答案:

答案 0 :(得分:0)

您的代码中至少有一个对象cell,必须为Set

您是否有一个实际上包含您要发送的电子邮件名称的工作表?因为这就是您的代码尝试执行的操作。

我已将您的代码从Do... Loop修改为For... Next。不知道有什么问题很容易陷入无休止的循环。

此代码是否起作用取决于您的输入变量。

Sub own()
    Dim shName As String
    Dim cell As Range
    Dim ws As Worksheet
    Dim i As Integer

    Set cell = ActiveCell 'or whatever refrence needed

    For i = 1 To 10
    If Not (Range("A" & i).Value = "") Then
        shName = Range("A" & i).Value
        'Is there a worksheet that corresponds to the email name?
        ThisWorkbook.Worksheets(shName).Copy
        Application.Dialogs(xlDialogSendMail).Show _
            cell.Offset(0, 1).Value, cell.Offset(0, 2).Value
    End If
    Next i

End Sub