2017-03-13 25 views
1

我有一个单元格,我想记录左侧相邻单元格更改时的时间。我用NOW()函数来完成它;但是,问题在于每次重新计算工作簿时都会更新。所以,我想知道是否有任何原始的方式来阻止这个非常自动更新的单元。立即停止()自动更新的功能

我当前公式中的细胞:

= IF(ISBLANK(H11) “”,IF(H11 = “兴趣”,NOW(),IF(H11 = “没兴趣”,NOW() ,“”)))

我个人想出了这一点:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Destination As Range 
    If Not Intersect(Target, Range("H:H")) Is Nothing Then 
     Target.Offset(0, 1).Value = Now 
    End If 
End Sub 

我这段代码的问题是,它正在寻找单元中的任何数据。我只希望细胞记录包含“有兴趣”或“不感兴趣”的时间。我正在查看的单元格当前包含“正在进行中”。我尝试过使用我的代码来尝试并纳入这些标准,但我一直遇到错误。有什么建议可以解决这个问题?提前致谢。

+0

您可以通过使用检查'如果StrComp(.Cells(1,1),“Interested”)= 0 Then' –

+0

'if target.value like“* interested”and target.offset(0,1).value =“”then ..... '读你的公式和代码,你的公式应该是我们的SEARCH功能的错误陷阱,以符合代码建议。 'IF(ISERR(SEARCH(“interested”,H11)),“”,NOW())' –

回答

1

试试下面的代码来代替:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim Destination As Range 
    If Not Intersect(Target, Range("H:H")) Is Nothing Then 
     If LCase(Trim(Target.Value2)) = "not interested" Or LCase(Trim(Target.Value)) = "interested" Then 
      Application.EnableEvents = False 
      Target.Offset(0, 1).Value = Now 
      Application.EnableEvents = True 
     End If 
    End If 
End Sub 

enter image description here

+0

感谢您的回复Ralph。不幸的是,当我尝试你的代码时没有任何显示。我更改单元格包含感兴趣,但没有时间显示在相邻的单元格中。 –

+1

使用'选择比较文本'将消除lcase的需要。 –

+0

代码正常工作(正如您可以在更新后的解决方案中看到的一样,因此,您可能需要检查表单中当前是否启用了事件,或者当您输入“interested”时是否存在拼写错误。) – Ralph

0

另一种方法是,你作为= TimeChanged(H11)使用一个简单的UDF

Option Explicit 
Option Compare Text 
Public Function TimeChanged(theCell As Variant) 
    If TypeOf theCell Is Range Then theCell = theCell.Value2 
    If theCell = "Interested" Or theCell = "Not Interested" Then 
     TimeChanged = Now 
    Else 
     TimeChanged = "" 
    End If 
End Function