2016-11-22 4 views
0

Je l'ai mis en place dès maintenant ainsi quand les données de la cellule changent, il met à jour la date. Lorsque vous actualisez le classeur, il met également à jour la date, même si je n'ai pas modifié le contenu de la cellule.Comment mettre à jour la date dans une cellule SEULEMENT si une certaine cellule est modifiée

Je veux seulement mettre à jour la date si je modifie le contenu de la cellule. Je tire mes données d'un fichier CSV donc je dois constamment me rafraîchir de temps en temps. Comment est-ce que je contourne ceci pour qu'il montre seulement la date à laquelle une cellule est vraiment modifiée?

J'ai une fonction publique configurée comme ça pour le moment, mais ça ne marche pas.

Public Function worksheetChange(ByVal Target As Range) 

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

End Function 

Même quand je rafraîchir la feuille de calcul et je ne l'ai pas modifié la cellule, il met à jour encore la date, comment puis-je contourner cela?

EDIT: J'ai trouvé ce type de code VBA, mais je ne sais pas comment le faire fonctionner.

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 

Avec le recul, ce code signifie que si l'application ne coupe pas alors prendre D4 et aussi, si le classeur ne met pas à jour, mise à jour L4 comme la date d'aujourd'hui.

Merci.

+0

pourrait-il que [D4] est recalculée lorsque vous actualisez la feuille de calcul, bien que la nouvelle valeur est égale à l'ancienne? –

+0

Je suppose donc, il tire les données du fichier csv lors de l'actualisation. Je veux seulement que la date change seulement si le contenu de la cellule change (c'est-à-dire banane à orange, pas banane à banane) J'ai mis à jour mon code afin de comprendre ce que j'essaie d'accomplir. – juiceb0xk

+0

Que diriez-vous d'une solution programmatique en sauvegardant l'ancienne valeur quelque part (disons dans une autre, feuille de calcul cachée) et en testant si la valeur a changé? –

Répondre

1

Consulte la 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

Il met toujours à jour la date même si la cellule contient la même valeur que lors de l'actualisation. Je ne veux que mettre à jour la date car la cellule change de contenu; essayer d'échapper à la mise à jour de la date lors de l'actualisation des données de même valeur. – juiceb0xk

+0

Cela fonctionne, merci! Maintenant, pour savoir comment faire cela en tant que fonction que je veux répandre cela à travers une gamme multiple de cellules. – juiceb0xk