【发布时间】:2016-06-09 13:45:22
【问题描述】:
我正在尝试通过在最后一列输入数据时添加 Now() 值来创建一个作为每一行唯一键值的列。我创建了一个子程序,用于检查要选择的单元格范围并在其中包含一个值,如果是,则将 Now() 值添加到另一列以充当该行的唯一标识符。这是我到目前为止的代码:
Private Sub Worksheet_SelectionChange(ByVal Target As range)
'Check to see if the click/selected cell is in column H
If Not Intersect(Target, range("H:H")) Is Nothing Then
'Make sure just one cell is selected and it isnt empty
If Target.Cells.Value <> "" And Target.Row > 7 And Target.Row <= 20 Then
'Update the "KeyA" value
range("A" & Target.Row).Value = Now()
End If
End If
End Sub
不幸的是,如果所选单元格中已经有一个值,这只会将 Now() 值添加到键列,所以如果我单击空单元格然后添加值,它不会将 Now() 添加到键列.将条目添加到所选单元格后,如何使子添加 Now() 值,而无需在向其添加值后重新选择单元格?
【问题讨论】:
-
使用
Worksheet_Change事件而不是Worksheet_SelectionChange。 Change 将在目标单元格中的值被修改时触发,而 SelectionChange 在您选择不同的单元格时触发。 -
如果你在答案中写下,我会标记它并投票
-
我对你的要求有点困惑。添加
Now()值时,H 列中的值是否已经存在,或者您希望在更改值后对其进行更新?如果之后,请尝试更改事件:Private Sub Worksheet_Change(ByVal Target As range) -
我希望它在更改值后更新,我使用该列作为隐藏键列,以便当我将数据从一张表复制到另一张表的连续子检查该键值是否存在时,如果它已经做到了,它不会被复制