• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Na invullen waarde 0, 1 of 2 doorgaan naar volgende cel

Status
Niet open voor verdere reacties.

Pieteben52

Gebruiker
Lid geworden
18 jun 2015
Berichten
7
Volgende "probleem":
1. In cel A5 invullen 0,1 of twee dan automatisch naar A6 doorgaan, na invullen 0,1 of 2 in A6 automatisch doorgaan naar A7, etc.
2. Bij A50 na invullen 0,1 of 2 doorgaan naar B5 en vandaar weer: na invullen 0,1 of 2 in B5 doorgaan naar B6 etc.

Krijg dat niet voor elkaar met standaard ALS-functie en weet te weinig van VB om zelf de goede macro te maken. Wie kan mij helpen? Alvast bedankt.
 
Kun je dit gebruiken?
 

Bijlagen

Laatst bewerkt:
Wat moet er gebeuren als er iets anders dan 0, 1 of 2 wordt ingevuld?
 
met het "OnKey" principe aangestuurd door vba:
deze werkt nu alleen voor de toetsenbord cijfers 0 1 2 en ( (nog) niet voor het numerieke toetsenbord)
 

Bijlagen

Hartstikke bedankt jongens!!

Met oplossing Cobbe kon ik van A50 --> B5; B50 --> C5; C50 --> A1. Na indrukken van Enter
Vraag van Edmoor nu pas gezien! Is 'gehandeld' door Sylvester.
Sylvester-ponte: werkt perfect en dat zelfs met numeriek toetsenbord. Als ik geen 0,1 0f 2 intik dan verspringt cursor niet. Dan met pijltjestoets wel naar volgende cel en elk getal wordt 2. Vul ik ander getal in dan 0,1 0f en dan Enter dan blijt dat getal wel staan.
Dus van pijltjestoets en Entertoets afblijven. Zou mooi zijn als er niets zou gebeuren (gewoon in betreffende cel blijven staan) bij elk getal niet 0,1 0f 2. Maar ben zo al super blij dat dit lukt.

Nogmaals bedankt,
M.vr.gr. Pieteben52
 
reactie op laatste uitbreiding

Hoi Sylvester-Ponten en Edmoor,

Bedankt dat jullie de moeite hebben genomen de eerdere oplossing nog uit te breiden. Te gek!

Wil ik gaan kijken wat die laatste oplossing doet dan komt hij met de melding:

"Compileerfout

De code in dot project moet worden bijgewerkt voor gebruik op 64-bits systemen. de instructie, werk ze bij en markeer ze met het kenmerk PtrSafe."

Dat begrijp ik natuurlijk niet. Wat te doen? Wat doet de uitbreiding extra tov eerdere oplossing? Iets met pijltjestoets maar wat? Niet verder als invulgetal niet gelijk is aan 0,1 of 2?

Hoor graag van je/jullie,

M.vr.g.r Pieteben52
 
Wijzig in de NumLockModule de declaraties in het onderstaande om het in zowel 32- als 64-bit Office te laten werken:
Code:
#If Win64 Then
    Declare PtrSafe Sub keybd_event Lib "user32" ( _
                        ByVal bVk As Byte, _
                        ByVal bScan As Byte, _
                        ByVal dwFlags As Long, _
                        ByVal dwExtraInfo As LongPtr)

    Declare PtrSafe Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Long
#Else
    Private Declare Sub keybd_event Lib "user32" ( _
                                ByVal bVk As Byte, _
                                ByVal bScan As Byte, _
                                ByVal dwFlags As Long, _
                                ByVal dwExtraInfo As Long)

    Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
#End If
 
Laatst bewerkt:
edmoor, ik zie 2 de zelfde declaraties moet er nog ergens "user64" komen te staan? of zo iets.

ps ik heb het nog niet uitgeprobeerd ( ik moet eerst een 64bittertje aanschaffen )
 
Nee, dat blijft user32, maar de declaraties zijn toch echt verschillend ;)
(PtrSave en LongPtr)

En het gaat om Office 64 bit. Niet Windows 64 bit.
Office 32-bit draait op zowel een 32- als 64-bit Windows.
 
Laatst bewerkt:
Bedankt voor de snelle reactie. Ga dan zeker doen maar helaas nu niet (moet weg). Ga het dus asap doen.

Jullie horen er nog van of het gelukt is.
 
Hoi heren,

Als no-no in vba heb ik het volgende gedaan:

De laatste code van Edmoor (in zijn bericht) gekopieerd en ipv de eerste (rode) code van je oplossing (0-1-2 met vba en numeriek toetsenbord) geplakt en de oude eerste rode code verwijderd.

Zal niet goed zijn want wil ik wat invullen dat krijg ik de melding:
"Compileerfout

Sub of Function is niet gedefinieerd!

Met mijn geringe kennis zaken zitten vergelijken in eerste oplossing en laatste oplossing maar ik zie niet de oplossing.

Zal toch eens op cursus moeten, lijkt mij.

Weet jij Edmoor wat ik niet goed heb gedaan??? Hoor graag van je,

Groet, Pieteben52
 
Ik denk dat niet jij maar ik een foutje heb gemaakt. Wijzig de regel:
Declare PtrSafe Function GetAsyncKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Long

In:
Declare PtrSafe Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer


Excuus ;)
 
Laatst bewerkt:
Beste heren,

Daar e.e.a. nu helemaal puik werkt, sluit ik deze als opgelost

Nogmaals bedankt voor jullie bijdragen,

M.vr.gr. Pieteben52
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan