Excel 尝试将工作表复制到电子邮件时出错

Excel 尝试将工作表复制到电子邮件时出错,excel,vba,outlook,Excel,Vba,Outlook,我正在尝试自动复制和发送电子邮件。但是,如果我将200更改为50,则在第行(sh.Range(“A1:D200”&lr))上会出现错误。如果我将200更改为50,则它可以工作,但使用200则无法工作。我得到的错误是1004超出范围 Option Explicit Sub Send_Email_With_snapshotDyka() Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Dyka PVC") Dim lr As Integer lr

我正在尝试自动复制和发送电子邮件。但是,如果我将200更改为50,则在第行(
sh.Range(“A1:D200”&lr))上会出现错误。如果我将200更改为50,则它可以工作,但使用200则无法工作。我得到的错误是
1004超出范围

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

我在工作表内创建了一个按钮,单击时宏将运行,因此它始终处于选中状态。你是说最后一个使用的单元格吗?D210不客气。如果你的问题现在解决了,请考虑接受我的回答。也适用于本项目和未来项目。