工作表更改添加Now()而不自动更新

时间:2017-03-31 00:27:33

标签: excel vba excel-vba

您好我对VBA很新,但我希望有人可以提供帮助。我正在尝试使用下面的代码创建时间戳。但我无法弄清楚如何将其复制到下一行。

 Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1 And Target.Row = 2 Then
    If Target.Value = "" Then
      Cells(2, 4).Value = ""
    Else
      Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM")
    End If
  End If
End Sub

它适用于那1个细胞。但是当我在A3,A4 ......中输入东西时,我怎么能重复这个。这可能是一个非常基本的问题,但我是一个新手!

3 个答案:

答案 0 :(得分:2)

删除第2行的检查并使用Target.Row:

  double initialSavings = 100;
  int months= 5;
  double rate = 0.00417;

  System.out.printf("Inital Savings: %.2f \n", initialSavings);
  System.out.println("Months: " + months);
  System.out.println("Monthy Interest rate: " + rate);

  System.out.println("Total amount componded over the " + months+ " months:"     );
  for(int x = 1; x <= months; x++) {
     double amount = initialSavings* Math.pow(1+ rate, x);
     System.out.printf("Month" + x + ": %.2f \n" , amount);
  }

答案 1 :(得分:1)

这应该这样做,

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 1  Then
    If Target.Value = "" Then
      Cells(Target.Row, 4).Value = ""
    Else
      Cells(Target.Row, 4).Value = Format(Now, "H:mm:ss AM/PM")
    End If
  End If
End Sub

否则你想要添加每个偏移单元

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2:A99999")) Is Nothing Then
        If Target.Value = "" Then
            Cells(2, 4).Value = ""
        Else
            Cells(2, 4).Value = Format(Now, "H:mm:ss AM/PM")
        End If
    End If
End Sub

Worksheet.Change Event (Excel)

Range.Offset Property (Excel)

答案 2 :(得分:0)

只是投入一个单线:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then Cells(Target.Row, 4).Value = IIf(Target.Value = "", "", Format(Now, "H:mm:ss AM/PM"))
End Sub

注意:

对于_Change个事件,您通常希望在更改的代码行之前添加将Application.EnableEvents设置为False的代码行(在这种情况下为单元格内容)然后在完成更改之后返回True。这,不要让事件句柄在无限循环中触发它

在这种情况下,这样的Application.EnableEvents处理是不必要的,因为您正在更改第4列中的单元格,而_Change事件处理程序只会对第1列中的更改执行某些操作