范围更新时列日期输入的VBA代码
我有一个电子表格,我需要B列自动填充更新C-K列的日期和时间。还有比K更远的列,我不想触发更新代码 首先,我使用了以下代码:范围更新时列日期输入的VBA代码,vba,excel,worksheet-function,Vba,Excel,Worksheet Function,我有一个电子表格,我需要B列自动填充更新C-K列的日期和时间。还有比K更远的列,我不想触发更新代码 首先,我使用了以下代码: Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Integer i = Target.Row Dim t As String t = VBA.Now Cells(i, 2) = t End Sub Private Sub Worksheet_Change(ByVal Target As Range
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C6:K43")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End If
End Sub
这对我的情况不起作用,因为这会更新行中的任何更改。这样做的好处是,用户无法在这些单元格上键入内容,从而阻止VBA输入更新的日期
要仅为所选行启用触发器,我转到以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C6:K43")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Dim i As Integer
i = Target.Row
Dim t As String
t = VBA.Now
Cells(i, 2) = t
End If
End Sub
然而,现在用户可以输入这些内容,并且不再有效
我试过锁定电池,但是VBA不能工作。我还尝试使用偏移量公式,但由于单元格的范围大于1列,因此这不起作用
在我把头发撕下来之前有什么建议吗?既然
Target
已经是范围
,就不需要使用范围(Target.Address)
,只要目标
就行了
此外,在@Tim Williams反馈之后,您需要将应用程序.EnableEvents
设置为False
,而不是在将当前时间添加到“B”列中的单元格后重新输入代码
请尝试以下代码:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C6:K43")
Application.EnableEvents = False
If Not Application.Intersect(KeyCells, Target) Is Nothing Then
Range("B" & Target.Row) = Now
End If
Application.EnableEvents = True
End Sub
从更改事件处理程序中更新工作表时,应在执行更新时禁用事件,否则将重新触发代码。我想这可能会对你有所帮助。回答得好-只要检查一下你的意思是不是真的
displayerts
?这不应该是启用事件吗
?感谢您提供上述代码。这确实适用于我所需的公式,但是,使用此代码,我仍然可以在B列中键入,这将删除此列中的VBA日期条目。这有什么办法吗?