时间戳单元格包含公式的VBA代码

时间:2019-12-13 17:10:31

标签: excel vba excel-formula timestamp worksheet

我有一个包含3个工作表的工作簿。 Worksheet1具有工作表2和工作表3的汇总。因此工作表1永远不会手动更新,因为数据/信息在工作表2/3中已更新,并且它通过单元格中的v查找公式填充到工作表1中。

每当工作表1的D列中的单元格包含1%-99%的百分比时,我都需要一个时间戳。

我希望此时间戳在输入第一个数据后永不更改。

我也希望时间戳记打印在G列中

我希望工作表1的D列中的单元格包含100%时都使用另一个时间戳。

我希望此时间戳在输入第一个数据后永不更改。

我还希望将时间戳记打印在H列中。

请帮助,我尝试了许多不同的公式。

这是我使用的最后一个公式,它不起作用,因为它仅在手动更改单元格时才会显示。但是由于工作表是根据公式填充的,因此无法捕获更改。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myTableRange As Range
Dim myDateTimeRage As Range
Dim myUpdatedRange As Range

Set myTableRange = Range("D1:D314")

If Intersect(Target, myTableRange) Is Nothing Then Exit Sub

Set myDateTimeRage = Range("N" & Target.Row)
Set myUpdatedRange = Range("O" & Target.Row)

If myDateTimeRage.Value = "" Then

    myDateTimeRage.Value = Now
End If

myUpdatedRange.Value = Now

End Sub

1 个答案:

答案 0 :(得分:0)

这是与Worksheet_Calculate一起使用的基本代码

Private Sub Worksheet_Calculate()
Dim myTableRange As Range

Set myTableRange = Range("D1:D30") 'Change the range as needed

    For Each cel In myTableRange 
    'when a cell is changed in the range due to a formula, the code loops through and checks all the cells for a change. 

        If cel.Value >= 0.01 And cel.Value <= 0.99 And cel.Offset(, 3).Value = "" And cel.Offset(, 4).Value = "" Then 
       'If the timestamp is not for columns G and H, change the offset(,3) to 10, and offset(,4) to 11

            cel.Offset(, 3).Value = Now

        ElseIf cel.Value = 1# And cel.Offset(, 4).Value = "" Then
        'Test for 100%

            cel.Offset(, 4).Value = Now
        End If

    Next cel
End Sub