2016-11-22 6 views
0

セルデータが変更されると、日付が更新されます。ブックの内容を更新すると、セルの内容が変更されていなくても、日付が更新されます。セルの日付を更新するにはどうすればいいですか?特定のセルが変更されている場合のみ

セルの内容を変更した場合にのみ、日付を更新する必要があります。私はCSVファイルから自分のデータを引き出していますので、いつも毎回更新する必要があります。これを回避するにはどのようにして、セルが本当に変更された日付だけを表示するのですか?

私は現時点でこのような公開機能を設定していますが、機能しません。

Public Function worksheetChange(ByVal Target As Range) 

If Not Application.Intersect(Target, [D4]) Is Nothing Then [L4] = Date 

End Function 

私はワークシートをリフレッシュし、私はセルを変更していない場合でも、それはまだ私がこの問題を回避んどのように、日付を更新?

編集:私はこのタイプのVBAコードを思いつきましたが、それをどう動かすかはわかりません。後知恵で

Private Sub Worksheet_Change(ByVal Target As Range) 

If Not Application.Intersect(Target, [D4]) Is Nothing Then 
If Not ActiveWorkbook.RefreshAll Then [L4] = Date 

End Sub 

は、このコードは、アプリケーションが交差しない場合はブックが更新されないならば、今日の日付としても、更新L4をD4を取っていることを意味します。

ありがとうございます。

+0

ことができることをワークシートを更新すると、新しい値が古いものに等しいが、[D4]、再計算されますか? –

+0

私はそう思います、それは、CSVファイルからリフレッシュするときにデータを引っ張っています。私はセルの内容が変更された場合にのみ日付を変更したい(バナナをバナナに、バナナをバナナに変えない) 達成しようとしていることを把握するためにコードを更新しました。 – juiceb0xk

+0

いくつかのプログラムによる解決策は、古い値をどこかに保存して(例えば、別の隠れたワークシートに)、値が変更されたかどうかテストするのはどうですか? –

答えて

1

は、参照してくださいlink

Dim oldValue 

Public Sub Worksheet_SelectionChange(ByVal Target As Range) 
    oldValue = Target.Worksheet.Range("D4").Value 
End Sub 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Intersect(Target, Target.Worksheet.Range("D4")) Is Nothing Then 
     If oldValue <> Target.Worksheet.Range("D4").Value Then 
     Target.Worksheet.Range("L4").Value = Date 
     End If 
    End If 
End Sub 
+0

リフレッシュ時と同じ値がセルに含まれていても、日付は更新されます。私は、セルが内容を変更するときに日付を更新したいだけです。同じ値のデータをリフレッシュするときに日付の更新を回避しようとしています。 – juiceb0xk

+0

それは、ありがとう!今私は複数の範囲の細胞にこれを広げたいと思っているので、これを関数としてどのようにするかを見つけることができます。 – juiceb0xk

関連する問題