【发布时间】:2019-02-17 18:05:52
【问题描述】:
我正在 Excel 中创建一个报表样式的工作表,并尝试在单元格“I6”的值为“已完成”时自动在单元格“P4”中输入时间戳
我尝试使用 =IF 公式,该公式有效,但我无法在此工作表将处理的机器上切换迭代计算。
我对编写自己的 VBA 还很陌生,但在让我当前的代码工作时遇到了一些麻烦。以下是我目前拥有的,没有给我任何结果。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As String
Set r = Cells("I6")
If r.Value Is Nothing Then Exit Sub
If r.Value <> "Completed" Then Exit Sub
If r.Offset(-2, 7).Value <> "" Then Exit Sub
Application.EnableEvents = False
r.Offset(-2, 7) = Now()
Application.EnableEvents = True
End If
End Sub
一旦将值“已完成”输入到单元格“I6”中,我希望代码在单元格“P4”中为我提供当前时间戳,但没有显示任何内容。我将如何更正它以获得基于值的时间戳?
【问题讨论】:
-
这个运行没有错误吗?您应该将
r声明为一个范围:Dim r as Range,然后是Set r = Range("I6")。这样r.Value就会触发。 AFAIK 你不能使用String的.Value属性...我认为不存在这样的属性。 -
这一行不正确 If r.Value Is Nothing Then Exit Sub .... 如果 r Is Nothing Then Exit Sub 但应该总是有一个 Range("I6")... . 您应该在该行上收到一条错误消息 Set r = Cells("I6")...as Cells("I6") is wrong syntax.