我正在尝试自动复制和发送电子邮件。但是,如果我将200更改为50,则会在行(sh.Range("A1:D200" & lr).Select
)上出现错误,但是在200上它不起作用。我得到的错误是1004 out of range
。
Option Explicit
Sub Send_Email_With_snapshotDyka()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Dyka PVC")
Dim lr As Integer
lr = sh.Range("A" & Application.Rows.Count).End(xlUp).Row
sh.Range("A1:D200" & lr).Select
With Selection.Parent.MailEnvelope.Item
.to = sh.Range("H3").Value
.Subject = sh.Range("H4").Value
.send
End With
MsgBox "done"
End Sub
以下行存在问题:
sh.Range("A1:D200" & lr).Select
发生的情况是您在(D200)中填充范围的末尾,然后将lastrow的值添加到该终止范围。假设lastrow是50,excel将看到您设置为“ D200”和“ 50”的范围,使其变成“ D20050”,这显然不是您想要的。像这样修改行:
sh.Range("A1:D" & lr).Select
这将为您提供“ A1:D”和“ 50”的范围,使其成为“ A1:D50”,这是正确的输出。