从自动更新

时间:2017-03-13 12:11:15

标签: excel vba excel-vba

我有一个单元格,我想记录左边相邻单元格的更改时间。我用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

我对此代码的问题是它正在查找单元格中的任何数据。我只希望单元格记录它包含"感兴趣的时间"或者"不感兴趣"。我正在查看的单元格当前包含"正在进行中"。我尝试过使用我的代码来尝试合并这些标准,但我一直遇到错误。关于我能做些什么来解决这个问题的任何建议?提前谢谢。

2 个答案:

答案 0 :(得分: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

RegEx Demo

答案 1 :(得分:0)

另一种方法是使用as = 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