Vbyesno box sluit niet na aanklikken yes

Status
Niet open voor verdere reacties.

Kirsten1712

Gebruiker
Lid geworden
11 jan 2017
Berichten
28
Hallo

Graag jullie hulp bij onderstaande situatie. Ik lijk er niet uit te komen, terwijl het volgens mij niet heel moeilijk zou mogen zijn.. (maar dat ligt wss aan mijn beperkte kennis ;))

Bedoeling van de macro is dat hij getriggerd wordt wanneer er een bepaalde waarde in een bepaalde cell wordt ingegeven, bv. ST_CELL. Dat deze op zijn beurt een msgbox triggert met de optie ja of nee en dat hij vervolgens een kolom naar rechts springt en daar een waarde invult wanneer er op 'ja' geklikt' wordt.

Probleem 1, is dat ie getriggerd wordt bij elke wijziging en als ik het target toevoeg, reageert ie helemaal niet meer. Probleem 2, op het moment dat je werkelijk op ja klikt, dan blijft de msgbox namelijk gewoon actief, tot je terug op nee klikt. Is er een mogelijkheid om de msgbox weer te sluiten nadat er op ja geklikt wordt? Leek mij dat deze standaard weer zou sluiten, maar dat blijkt niet het geval te zijn. Heeft het te maken met het feit dat de triggerwaarde meerdere keren voorkomt? Dit zou namelijk een lijst moeten worden waar er dagelijks data aan wordt toegevoegd.

Hieronder alvast de onprofessionele code en een voorbeeldbestandje.

Code:
Private Sub Worksheet_Change(ByVal target As Range)
    Dim keycells As Range
    Dim response As Integer
    
    Set keycells = Range("A1:o9999")
    
    response = MsgBox("Werd Product X geremanned?", vbYesNo + vbQuestion)
    
    If Not Application.Intersect(keycells, Range(target.Address)) _
           Is Nothing Then
          
        If response = vbNo Then Exit Sub
        If response = vbYes Then ActiveCell.Offset(, 1) = "Product X.1"
        Exit Sub
    End If
End Sub

Bekijk bijlage forum planning test macro.xlsm

Hartelijk dank!
 
Hallo Kirsten,

Het komt doordat je opnieuw een change doet doordat de code iets invult in een cel.
Met 'application.enableevents = false' schakel je die tweede oproep uit.

Als je alleen de code wilt laten lopen bij een verandering op kolom A, dan range("a1:eek:9999") aanpassen in columns(1).
Code:
Private Sub Worksheet_Change(ByVal target As Range)
    If Not Intersect(Range("A1:o9999"), target) Is Nothing Then
     Application.EnableEvents = False
       If MsgBox("Werd Product X geremanned?", vbYesNo + vbQuestion) = vbYes Then target.Offset(, 1) = "Product X.1"
     Application.EnableEvents = True
    End If
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan