尝试将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
每次尝试在其中一个单元格中进行更改时,我都会收到一个需要的对象错误。我怎样才能做到这一点?
答案 0 :(得分:1)
我认为您的问题并未将RowNum
或ColNum
声明为任何内容。您希望这两者都是数字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