Excel VBA - Worksheet_Change代码的问题

时间:2014-08-05 14:25:54

标签: excel vba excel-vba worksheet

我正在尝试创建一个宏,将日期放在另一个工作表的单元格中,当初始工作表发生更改时,但它会给我一个超出范围的错误。有没有办法绕过这个,或者我根本无法使用Worksheet_Change这种情况。如果是这样,我可以使用什么?我只是想测试它,所以到目前为止我只有这个:

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    Worksheets("Sheet4").Activate
    Range("E1").End(xlDown).Offset(1, 0).Value = Date

    Application.EnableEvents = True

End Sub

我现在有了这个:

Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False

    If Worksheets("Testing Sheet").Range("E2").Value = "" Then
        Worksheets("Testing Sheet").Range("E2").Value = Date
    Else
       ' Worksheets("Testing Sheet").Range("E2").End(xlDown).Offset(1, 0).Value = Date
    End If

    Application.EnableEvents = True

End Sub

但是Else的声明给了我一个错误,说明应用程序定义或对象定义错误。 (旁注我在实际代码中没有注释掉它)

1 个答案:

答案 0 :(得分:1)

您将收到错误,因为您正在检查此条件

If Worksheets("Testing Sheet").Range("E2").Value = "" Then

假设你有一些价值E2 Cell。所以它转到Else声明

Worksheets("Testing Sheet").Range("E2").End(xlDown).Offset(1, 0).Value = Date

但可能没有E2 Cell以下的数据。所以.End(xlDown)选择E1048576 Cell这是excel支持的最后一行。

.Offset(1, 0).Value尝试指出不受支持的E1048577 Cell

所以你得到了应用程序定义的错误。希望这是有道理的。