2010-05-03 16 views

Répondre

1

Vous voulez accrocher dans la Worksheet_Change event.
Quelque chose comme cela devrait vous aider à démarrer:

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Target.Value = "OVER" Then 
     MsgBox "Cell " & Target.Address & " crosses OVER" 
    ElseIf Target.Value = "UNDER" Then 
     MsgBox "Cell " & Target.Address & " crosses UNDER" 
    End If 
End Sub 

Sub just_testing() 
    Dim mycell As Object 
    Set mycell = ActiveSheet.Cells(1, 1) 
    Call Worksheet_Change(mycell) 
End Sub 

Avec ce code, en changeant la valeur de la cellule A1 à OVER imprimera le message "cellule $ A $ 1 croix OVER" (sensible à la casse!).


Modifier la base de nouvelles informations fournies par OP:
Pour les modifications de feuille de calcul automatique, vous devrez utiliser l'événement Worksheet_Calculate (exemple ci-dessous). Et pour une raison étrange, Excel semble exiger que vous ayez =NOW() n'importe où dans la feuille de calcul pour Worksheet_Calculate pour réellement déclencher.

Private Sub Worksheet_Calculate() 
    Dim mycell As Object 
    Set mycell = ActiveSheet.Cells(1, 1) 
    If mycell.Value = "OVER" Then 
     MsgBox "Cell " & mycell.Address & " crosses OVER" 
    ElseIf mycell.Value = "UNDER" Then 
     MsgBox "Cell " & mycell.Address & " crosses UNDER" 
    End If 
End Sub 
+0

Merci. Cela fonctionne très bien si la cellule est modifiée manuellement de OVER à UNDER ... mais ma feuille est liée à une source de données en direct à l'extérieur. Ainsi, lorsque la formule conditionnelle (ie (a1> b3, "over", "under")) reconnaît que a1 est devenu plus petit que b3 et que la cellule passe de "over" à "under" cette macro ne semble pas fonctionner . Merci. Patrick im: AlphabetPJL – patrick

+0

@patrick: merci pour les informations supplémentaires. J'ai ajouté un autre exemple testé. Faites-moi savoir comment cela fonctionne pour vous. – bernie