是:
我一直在寻找解决问题的方法,而且无法找到解决问题的关键。
在工作表中,我需要在指定的列范围之后立即自动将值(静态时间戳)插入到列中,条件是它们都不为空(已填充)。
考虑到将值一个接一个地插入行的顺序,当列nextImage
列范围内的值被填充时,我想要列A:C
(指定范围之后的下一个)更新。
D
现在,当我在列ColumnA ColumnB ColumnC AutoInsert
filled filled filled 2016-01-11 20:57
filled filled
filled
filled filled filled 2016-01-11 20:58
中插入值时,当前时间戳显示在A
列中。
B
目前的结果:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:A")) Is Nothing Then
With Target(1, 2)
.Value = Now
End With
End If
End Sub
我需要一些方法来检查行中指定范围的列,而不仅仅是上面显示的第一列(在我得到了什么?部分)。 < / p>
我不确定是否需要除ColumnA AutoInsert
value 2016-01-11 21:06
value 2016-01-11 21:06
value 2016-01-11 21:07
之外的其他方法,或某种循环。我尝试过Intersect
和Target(x, y)
,但行为与预期不同,似乎适用于每个活跃的细胞。
答案 0 :(得分:4)
试试这个:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A:C")) Is Nothing And WorksheetFunction.CountBlank(Range("A" & Target.Row & ":C" & Target.Row)) = 0 Then
With Me.Cells(Target.Row, 4)
Application.EnableEvents = False
.value = Now
End With
End If
Application.EnableEvents = True
End Sub
Me
指的是工作表。它的工作原理是因为这是一个工作表事件。如果这是在模块中,则需要ActiveSheet
。 .Cells
是一个范围。它以这种格式Cells(Row,Column)
使用。整件事可以改写为Me.Range("D" & Target.row)
。
目标是一个范围,而Target(row,column)
是Target.Cells(row,column)
的简写,您可以放置Target(1,4)
。 Target(1,1)
会引用自己,或者是一系列单元格中的左上角单元格。它不受范围限制,但使用左上角的单元格作为起点。