2016-12-12 2 views
0

Je voudrais faire une macro. Mes cellules de test sont sur une autre feuille. Feuille - (données) Macro vérifier une plage ("D2:D10") si les cellules contiennent la valeur 12 si oui montrez-moi une boîte de message "Go to add to system" et cette cellule où la macro a trouvé une valeur sera mis à 0.Macro avec boîte de message de show si la cellule contient une valeur

J'ai ce code mais il doesn ' Je travaille pour moi Je ne sais pas pourquoi. Pouvez-vous m'aider?

Private Sub check(ByVal Target As Range) 
For Each c In Worksheet("data").Range("D2:D10") 
If Range("D2:D10") = 12 Then 
    MsgBox "Go to add to system" 
    Range ("D2:D10").value = 0 
End If 
Next c 
End Sub 
+0

si plusieurs cellules ont 12? Voulez-vous changer la gamme complète à 0 si même une cellule est trouvée 12? – nightcrawler23

+0

plusieurs ou un seul peu importe –

+0

@ Fiínek Cahů tester le code dans ma réponse ci-dessous et laissez-moi savoir si cela fonctionne comme vous l'avez prévu –

Répondre

1

Le code ci-dessous corrigera votre code (il fonctionnera sans erreur):

Option Explicit 

Private Sub check(ByVal Target As Range) 

Dim c As Range 

For Each c In Worksheets("data").Range("D2:D10") 
    If c.Value = 12 Then 
     MsgBox "Go to add to system" 
     c.Value = 0 
    End If 
Next c 

End Sub 

Cependant, vous pouvez aller avec une approche légèrement différente - en accomplissant ce que vous essayez d'atteindre dans le Worksheet_Change événement (de la feuille "données").

code

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim c As Range 

' Optional : use if criteria below to check the range only 
' if one of the cells inside range("D2:D10") has changed 
If Not Intersect(Range("D2:D10"), Target) Is Nothing Then 
    ' if you decide to use the "If"above, then you don't need the "For" loop below 
    For Each c In Range("D2:D10") 
     If c.Value = 12 Then 
      MsgBox "Go to add to system" 
      c.Value = 0 
     End If 
    Next c 
End If 

End Sub 
+0

Salut, s'il vous plaît pouvez-vous m'aider à remplacer la gamme pour des cellules spécifiques? ou puis-je utiliser les deux méthodes ensemble? thx –

+0

@ FiínekCahů quelle est la cellule spécifique? Vous pouvez également utiliser une plage pour une seule cellule. –

+0

pas la plage mais des cellules spécifiques telles que "D29", "D55" etc. –