如何使用VBA将Excel单元格设置为当前日期?

时间:2014-08-20 00:08:52

标签: excel vba excel-vba

尝试将excel单元格设置为当前日期时,只要有人在工作表中的其他单元格中进行更改,我就会遇到错误。

以下是代码:

Dim EditDate As Date

RowNum = ActiveCell.Row
ColNum = ActiveCell.Column

If ColNum = 11 Or ColNum = 13 Or ColNum = 19 Or ColNum = 20 Or ColNum = 21 Or ColNum = 22 _
Or ColNum = 23 Or ColNum = 24 Then

    Application.EnableEvents = False

    EditDate = Date()
    ActiveWorksheet.Range("Y," & RowNum).Value = EditDate

    Application.EnableEvents = True

End If

每次尝试在其中一个单元格中进行更改时,我都会收到一个需要的对象错误。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

我认为您的问题并未将RowNumColNum声明为任何内容。您希望这两者都是数字type(在此示例中我使用Long)。

如PatricK所述,ActiveWorksheet应为ActiveSheet。您还有其他一些语法错误,但只需查看我的代码即可找到您想要的工作版本。

我不知道你是否放了这段代码。我会将Worksheet对象中的代码作为Change Event托管。

工作代码:

Sub Worksheet_Change(ByVal Target As Range)
    Dim EditDate As Date
    Dim RowNum As Long
    Dim ColNum As Long

    RowNum = ActiveCell.Row
    ColNum = ActiveCell.Column

    If ColNum = 11 Or ColNum = 13 Or ColNum = 19 Or ColNum = 20 Or ColNum = 21 Or ColNum = 22 _
    Or ColNum = 23 Or ColNum = 24 Then
        Application.EnableEvents = False
        EditDate = Format(Now(), "d/m/yyyy hh:mm")
        ActiveSheet.Range("Y" & RowNum).Value = EditDate
        Application.EnableEvents = True
    End If   
End Sub

答案 1 :(得分:0)

您应该使用ActiveSheet.Range("Y," & RowNum).Value = EditDate,而不是ActiveWorksheet