我想知道下面我的代码发生了什么。 我正在尝试根据电子邮件列表自动生成电子邮件,并且可以更改列表。因此,我必须使用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
错误消息是无效的过程调用或参数。 为什么? 预期结果应该能够根据列表发送电子邮件(可以更改电子邮件,因此可以使用直到循环)。
答案 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