首页 > 解决方案 > 尝试将工作表复制到电子邮件时出现错误

问题描述

我正在尝试自动复制和发送电子邮件。sh.Range("A1:D200" & lr).Select但是,如果我将200更改为50它可以工作但使用 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

标签: excelvbaoutlook

解决方案


以下行存在问题:

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”,这是正确的输出。


推荐阅读