您好我对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 ......中输入东西时,我怎么能重复这个。这可能是一个非常基本的问题,但我是一个新手!
答案 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
答案 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列中的更改执行某些操作