Melding actief indien je naar de volgende regel gaat

Status
Niet open voor verdere reacties.

Robert Smidt

Gebruiker
Lid geworden
26 mei 2009
Berichten
947
Beste Helpmij'ers,

Ik ben op zoek naar de vba-code die een melding activeert wanneer deze voldoet aan een keuze en wanneer ik naar een andere regel ga. De huidige code is:

Code:
If Range("f" & Target.Row) = "Opbrengst EU-klant particulier" And [B]Range("g" & Target.Row) = ""[/B] Then
          CreateObject("WScript.Shell").Popup "bla bla bla!", 10, "Waarschuwing: ", vbCritical
End If

In plaats van: "Range("g" & Target.Row) = "" zoek ik de code die er voor zorgt dat de vorige vraag: (If Range("f" & Target.Row) = "Opbrengst EU-klant particulier") geactiveerd wordt in geval ik naar de een andere regel ga.

Alvast heel hartelijk bedankt.

Robert
 
Laat ook zien in welke gebeurtenis (event routine) je deze code hebt staan.
 
Bedoel je dit:

Code:
Private Sub Worksheet_Change(ByVal Target As Range) ', Cancel As Boolean = er aan toegevoegd
Application.EnableEvents = False

If Not Intersect(Target, Range("a13:y500")) Is Nothing Then
    If Selection.Count = 1 Then
    If Not Intersect(Target, Union(Columns(1), Columns(2), Columns(3), Columns(4), Columns(5), Columns(6), Columns(7), Columns(8), Columns(9), Columns(10), Columns(11), Columns(12), Columns(13), Columns(14), Columns(15), Columns(18), Columns(23), Columns(32))) Is Nothing Then
        With Target
 
Ja.
De naam Worksheet_Change bepaalt welke gebeurtenis het is. Deze wordt dus uitgevoerd als je een cel na wijzigen verlaat.

Als je een routine zoekt die start als je een cel verlaat ook zonder dat deze is gewijzigt moet je Worksheet_SelectionChange gebruiken.
 
Dank je wel. En welke code moet ik i.p.v. Range("g" & Target.Row) gebruiken?
 
Dat ligt er aan wat precies je bedoeling is. Met Range("g" & Target.Row) kijk je dus in kolom G en de huidige regel. Is het de bedoeling om de code uit te voeren als je naar een andere regel gaat? Dus niet als je naar een andere kolom in dezelfde regel gaat maar echt naar een andere regel?

Dat kan je dan zo doen:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static VorigeRegel As Long
    
    If Target.Row <> VorigeRegel Then
        MsgBox "Andere regel."
    End If
    
    VorigeRegel = Target.Row
End Sub
 
Laatst bewerkt:
Jouw interpretatie is helemaal juist. (Is het de bedoeling om de code uit te voeren als je naar een andere regel gaat? Dus niet als je naar een andere kolom in dezelfde regel gaat maar echt naar een andere regel?)

Omdat ik met meerdere keuzes werk in dezelfde sheet is het daarom de bedoeling dat de code alleen betrekking heeft op die ene keuze en niet op de andere keuzes. Volgens mij heeft jouw voorstel ook betrekking op alle keuze's. Met meerdere keuzes bedoel ik dat wanneer zich bepaalde zaken voordoen er een melding verschijnt, m.a.w. er staan meerdere meldingen in de sheet.

Is het mogelijk dat er een code is die (Range("g" & Target.Row) = "" ) vervangt, aangezien ik niet meer wil dat de melding verschijnt wanneer de actieve rij in kolom G ook leeg is maar wanneer ik de actieve regel verlaat en deze voldoet aan de eerste keuze.
 
Voor een juist begrip:
Code:
If Range("f" & Target.Row) = "Opbrengst EU-klant particulier" And Range("g" & Target.Row) = "" Then
          CreateObject("WScript.Shell").Popup "bla bla bla!", 10, "Waarschuwing: ", vbCritical
End If
Daar kijk je of kolom F op de huidige regel de tekst "Opbrengst EU-klant particulier" bevat en of kolom G op diezelfde regel leeg is. Als dat zo is wordt er een melding getoond. Wat wil je daarin precies anders hebben?
Kolom G op die regel mag nu wel leeg zijn?
 
Laatst bewerkt:
Klopt helemaal: Range("g" & Target.Row) = "" moet worden vervangen door een code wanneer ik de regel verlaat
 
Ik snap nog niet wat je bedoeld. Als er geen controle op kolom G hoeft plaatst te vinden dan laat je die controle toch gewoon weg?
Code:
If Range("f" & Target.Row) = "Opbrengst EU-klant particulier" Then
      CreateObject("WScript.Shell").Popup "bla bla bla!", 10, "Waarschuwing: ", vbCritical
End If
 
zolang ik op de actieve regel allerlei mutaties verricht mag het systeem geen melding geven, pas wanneer ik de regel verlaat moet de melding in beeld komen, mits er aan de eerste voorwaarde If Range("f" & Target.Row) = "Opbrengst EU-klant particulier" wordt voldaan.
 
Dat liet ik toch al zien in #6? Daar maak je dan dit van:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Static VorigeRegel As Long
    
    If Target.Row <> VorigeRegel Then
        If Range("F" & Target.Row) = "Opbrengst EU-klant particulier" Then
              CreateObject("WScript.Shell").Popup "bla bla bla!", 10, "Waarschuwing: ", vbCritical
        End If
    End If
    VorigeRegel = Target.Row
End Sub
 
Bedankt voor de code. Ik ben bang dat ik toch naar een andere oplossing moet zoeken aangezien er meer vba-codes in staan die vanuit de actieve regel werken en dat nu niet meer doen.
 
Als je wil dat een code wordt uitgevoerd als je naar een andere regel gaat is geen andere oplossing. De andere code die moet gaan werken kan je daar uiteraard gewoon in opnemen.
 
Ik ben wel benieuwd naar het bestand hoe een en ander in elkaar steekt met de andere codes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan