2016-11-22 76 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 

事后看来,这个代码意味着,如果应用程序不相交然后采取D4以及,如果工作簿不刷新,更新L4为今天的日期。

谢谢。

+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

相关问题