2017-03-13 53 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