Event macro

Status
Niet open voor verdere reacties.

Oude leerling

Gebruiker
Lid geworden
30 aug 2010
Berichten
554
Geacht forum,

In een exelsheet vul ik 2 getallen in.
Als ik het 2e getal ingevuld heb klik ik op Enter
Na het op Enter klikken moeten er bepaalde handelingen worden uitgevoerd
Hoe moet het begin van de macro eruit zien?
Vriendelijke groet , Jaap
 
Zoiets:
Als je in het gebied A1:A20 iets verandert, komt er in de cel daarnaast "test" en 5 cellen ernaast "nog een test" te staan.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A1:A20")) Is Nothing And Target.Count = 1 Then
   Target.Offset(, 1) = "test"
   Target.Offset(, 5) = "nog een test"
 End If
End Sub
 
J.Veer

Nee , dat bedoelde ik niet
Zal proberen wat uitgebreider uit te leggen.
Bv.
a) Ik klik in cel A10 en type daar het getal 25 (klik NIET op enter )
b) Ik klik daarna in cel B10 en type daar het getal 10 (klik daarna WEL op enter en moet de Eventmacro pas starten)
c) Aan de hand wat dan de active cel is moeten er bepaalde dingen uitgevoerd worden maar dat is niet het probleem

Wat ik zoek is dus een oplossing dat de Macro pas start na op Enter gedrukt te hebben en niet eerder
 
Wil je alleen dat de macro start als er in kolom B op enter gedrukt wordt?
 
Hoe klik je op <Enter>? Virtueel toetsenbord of zo?
 
Het Change event wordt altijd uitgevoerd als je een cel hebt gewijzigd en deze verlaat.
Of dat nu met een toets gebeurd of door op een andere cel te klikken.
 
Gewoon de range naar kolom B aanpassen lijkt mij

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("B1:B20")) Is Nothing And Target.Count = 1 Then
   Target.Offset(, 1) = "test"
   Target.Offset(, 5) = "nog een test"
 End If
End Sub
 
JVeer,
Oke , ga ik proberen

Edmoor,

De handeling die ik wil programmeren is dat , na op Enter gedrukt te hebben , ergens in die zelfde Kolom B
ook getallen worden geplaatst
Begrijp ik je goed als ik dan denk dat dan iedere keer de eventmacro steeds weer opnieuw uitgevoerd word
want dat is niet de bedoeling
 
Ja.
Zoals ik al zei, het Change event wordt altijd uitgevoerd als je een cel hebt gewijzigd en deze verlaat.
 
Dan gaat het mis inderdaad. Probeer het dan maar eerst even zo

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
 If Not Intersect(Target, Range("B1:B20")) Is Nothing And Target.Count = 1 Then
   Target.Offset(, 1) = "test"
   Target.Offset(, 5) = "nog een test"
 End If
Application.EnableEvents = True
End Sub
 
Waar is het voorbeeldbestand? De vraag lijkt bij elke reactie te wijzigen.
 
Als je bij het verlaten van een cel in kolom B wilt controleren of de vorige cel in kolom A was, kan je zoiets doen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Static PrevRng As Range
    
    If Not PrevRng Is Nothing Then
        If Target.Column = 2 And PrevRng.Column = 1 Then
            MsgBox "We verlieten net kolom B en kwamen van kolom A"
        End If
    End If
    
    Set PrevRng = Target
End Sub
Wees er maar creatief mee :)
 
Laatst bewerkt:
Kijk eens naar Worksheet_SelectionChange icm Application.OnKey "{ENTER}" als het echt en enkel na een ENTER moet.
 
Hiervoor is Excel niet ontworpen.

Als je wil programmeren als reaktie op een aktie door een gebruiker (user), gebruik dan een Userform (what's in a name ?)
 
Ik denk dat ik niet op de juiste manier bezig ben
Heb alle adviezen overwogen en geprobeerd en ga het op een andere manier realiseren
Dit gaat te veel problemen geven
Een ieder bedankt voor de reacties
Heb evengoed toch wat van deze sessie opgestoken
Vriendelijke groet Jaap
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan