Helpmij.nl
Helpmij.nl
Helpmij.nl
Steun Helpmij.nl! Klik hier     Computerprobleem? Klik hier!

Quote

Weergeven resultaten 1 tot 8 van 8

Onderwerp: Code mag alleen werken indien de cursor in een van de volgende cellen staat

  1. #1
    Senior Member
    Geregistreerd
    16 augustus 2006
    Vraag is opgelost

    Code mag alleen werken indien de cursor in een van de volgende cellen staat

    Hallo,

    Ik zou graag willen dat een Macro alleen iets doet indien de cursor op een van de onderste Cellen staat en op alle ander cellen niets doet.

    Dus als voorbeeld:
    De cursor moet 1 omlaag springen indien de cursor op het moment van begin van de Macro in cel D10 of D20 stond, anders mag er niets gebeuren.

    Ik zat te denken iets in deze richting:
    Als de range = D10 of D20 dan -> voer je de 2e Macro uit, maar anders -> EXIT SUB.
    In theorie heb ik het denk ik wel goed, maar hoe schrijf je dat dan weer in VBA.

    Ik kwam niet verder dan:

    Code:
    Sub Macro1()
        If ActiveCell.Range = ("D10") or ActiveCell.Range = ("D20") Then
        Call GOTO_andere_CEL
        Else: Exit Sub
    
    End Sub
    
    
    Sub GOTO_andere_CEL()
            ActiveCell.Offset(1, 0).Select
    End Sub
    maaar dat werkt dus niet.

    Heeft iemand voormij het antwoord?

    Alvast bedankt
    Humadgen

  2. #2
    Mega Senior Timshel's avatar
    Geregistreerd
    14 februari 2015
    Locatie
    Leiden
    Afstand tot server
    ±147 km
    Probeer het eens met ActiveCell.Address(0, 0)
    Bezoek ook eens de 6-voudig website-van-het-jaar www.beterspellen.nl

  3. #3
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    En wijzig die Else: Exit Sub in End If
    "Hardware: The parts of a computer system that can be kicked. "
    Op rechtstreekse vragen via email reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  4. #4
    Giga Senior Ginger's avatar
    Geregistreerd
    29 december 2006
    Locatie
    Delft
    Afstand tot server
    ±162 km
    Kan aan mij liggen, maar als ik in een cel sta en "enter" in druk op het toetsenbord, ga ik altijd 1 cel naar onder...
    Daar is geen macro voor nodig toch?
    ____________________________
    GINGER AlsoKnownAs REDHEAD
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Test een nieuwe VBA-code altijd éérst uit op een
    kopie van het bestand ipv direct in het orgineel...!

    + + + + + + + + + + + + + + + + + + + + + + + + + +

  5. #5
    Senior Member
    Geregistreerd
    16 augustus 2006
    Allen bedankt voor de input, maar ik kom er niet verder mee.
    @ Timshel


    Waar moet ik in deze code

    Code:
    Sub Macro1()
        If ActiveCell.Range = ("D10") Or ActiveCell.Range = ("D20") Then
        Call GOTO_andere_CEL
        Else: Exit Sub
    End Sub
    Code:
    ActiveCell.Address(0, 0)
    plaatsen zodat cel D10 en D20 worden geidentificeerd, (even ter verduidelijking uiteindelijk wil ik nog meer cellen identificeren waarbij ALLEEN de Macro mag werken als de cursor op een van die cellen staat.

    @ Edmoor
    Als ik het vorig antwoord heb begrepen dan kan ik misschien ook de end if toepassen? want die zie ook nu nog niet

    @ Ginger,
    Tuurlijk heb je gelijk maar het idee is dat een bepaalde Macro ( niet dit voorbeeld ) pas mag gaat lopen als bijvoorbeeld de cursor in cell D10 staat of D20 of D30 en (zo nog een aantal meer)
    Als deze op D9 staat worden er dingen verwijdert en dat wil ik beperken door alleen toestemming te geven als een van de vooraf gedefinieerde cellen is geselecteerd.
    De 2e Macro was maar een voorbeeldje. uiteindelijk is het een heel ander Macro

    Ik hoop dat dat een beetje meer duidelijkheid geeft op de probleem stelling

  6. #6
    Tera Honourable Senior Member edmoor's avatar
    Geregistreerd
    8 september 2000
    Locatie
    Zuid-Holland
    Wat Timshel bedoelt is dat je ActiveCell.Address(0, 0) moet gebruiken in plaats van ActiveCell.Range

    En als het om meer cellen gaat dan de 2 in je voorbeeld kan je dat beter zo doen:
    Code:
    Sub Macro1()
        Select Case ActiveCell.Address(0, 0)
            Case "D10", "D20", "D30"
                Call GOTO_andere_CEL
        End Select
    End Sub
    Dan is het eenvoudiger uit te breiden met meer cellen.
    Laatst aangepast door edmoor : 14 maart 2018 om 07:31
    "Hardware: The parts of a computer system that can be kicked. "
    Op rechtstreekse vragen via email reageer ik niet. Daar is het forum voor.
    Lees ook: http://www.helpmij.nl/forum/announcement.php?f=5

  7. #7
    Senior Member
    Geregistreerd
    16 augustus 2006
    @ Edmoor

    Helemaal super net getest en het werkt. (maar dat wist jij natuurlijk allang )
    Weer wat geleerd.
    Thanks

    Humadgen

  8. #8
    Giga Honourable Senior Member
    Verenigingslid

    Geregistreerd
    12 juni 2008
    Ook aan je manier van uitleggen is nog wel wat te verbeteren.

    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Not Intersect(Target, Range("D10,D20,D30")) Is Nothing Then Target.Offset(5).Select
    End Sub
    Laatst aangepast door snb : 15 maart 2018 om 10:15
    VBA voor smarties
    VBA is een taal die je moet leren met een grammatica- en een woordenboek.

    http://www.helpmij.nl/forum/announcement.php?f=5
    Plaats svp geen bestanden op andere sites; nadat het bestand daar verwijderd is wordt een forumdraad onbegrijpelijk voor anderen.

  9. Dit topic is automatisch gesloten omdat er sinds vier maanden niet meer op gereageerd is.

    Indien gewenst kan de topicstarter een verzoek tot heropening indienen.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl en business

Partners
Sponsoren