选定列中的静态日期作为公式更改值

时间:2013-05-30 05:05:19

标签: excel excel-vba vba

我想通过excel宏来实现这个目标:

在我的工作簿Sheet1中,通过公式在范围(A2:H20)中输入值。

我还有Range(J2:P20),它会跟踪Range(A2:H20)中值的变化,并使用此格式dd-mmm-yyyy的日期戳。

现在我想这样做:

  • 如果A2中的值更改,则日期戳应反映在J2
  • 如果A3中的值更改,则日期戳应反映在J3
  • 如果B2中的值更改,则日期戳应反映在K2
  • 如果B3中的值更改,则日期戳应反映在K3

这与那些范围内的其他细胞相同。

日期戳应替换其各自单元格中的任何现有日期(如果存在)。 如果范围(A2:H20)中的任何单元格为=0或为空,则相应单元格中不应存在日期戳。

1 个答案:

答案 0 :(得分:0)

这是一个仅针对单元格A2 / J2进行处理的示例。如果要在整个范围内使用它,则必须扩展代码。下面的代码位于工作表的“Worksheet_Change”过程中。部分示例来自Microsoft

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
'Code Example from Microsoft.com
'http://support.microsoft.com/kb/213612


' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A2:H20")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then

    ' Display a message when one of the designated cells has been
    ' changed.
    ' Place your code here.
    'MsgBox "Cell " & Target.Address & " has changed."  <--- Original Microsoft Example

    'Code to Check Value/Status of A2
    If Target.Address = "$A$2" Then
        If Range("A2").Value <> "" Then
        Range("J2").Value = Now()
        Else
        Range("J2").Value = ""
        End If
    End If

End If
End Sub