Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

probleem met Keydown in een VBa applicatie

sifa123
8 antwoorden
  • Hallo allemaal,

    Ik heb door een beetje afkijken en veel macro's opnemen (en daarna aanpassen) een VBA applicatie in elkaar gesleuteld. Daarin heb ik een formulier gemaakt met de gegevens van een regel.
    Aan dat formulier heb ik een veld toegevoegd om te zoeken naar een tekst in het werkblad. Ik wilde kunnen kiezen tussen vooruit en terug zoeken d.m.v. de toetsen Ctrl+F en CTRL+B.
    Daarvoor heb ik gebruik gemaakt van
    Private Sub tbzoek_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer).
    Het probleem is nu dat het meestal werkt, maar een enkele keer reageert hij plotseling niet meer op de Ctrl toetsen, terwijl de rest blijft werken.
    Wie weet wat de oorzaak kan zijn of weet een way-around?
    Ik wil de software aan anderen aanbieden, maar dit is een gebrek dat geen vertrouwen wekt.
  • keydown werkt alleen bij 'normale' toetsen.
    wil je alles vangen dan zul je wat dieper moeten graven en een 'keyboard hook' moeten afvangen.

    Ik kan zelf niet controleren of de code in de link helemaal correct is, maar het principe lijkt overeen te komen met code die ik in delphi heb toegepast.

    Link :
    http://vbnet.mvps.org/index.html?code/hooks/lowlevelkeyboardproc.htm

    Overigens moet je wel bedenken dat je programma zo heel snel in de categorie 'key-loggers' komt te vallen …
  • Dank voor het meedenken.

    Volgens de Helpfile van Visual Basic is KeyDown juist bedoeld voor de bijzondere toetsen en combinaties. Het werkt ook meestal wel, maar een enkele keer niet. Verlaat ik het formulier en ga er opnieuw in, dan werkt het wel weer.
    De code in de link wordt niet geaccepteerd door VBA. Ik denk dat de syntax verschillen met Delphi te groot zijn.
  • De link zegt dat de code compatibel is met VB5 & 6.
    Welke versie heb jij dan ?
  • Ik heb Office 2000 en dat zou Visual Basic 6.0 moeten zijn.
  • Ah … maar dat is niet 'echt' Visual Basic.
    Da's 'Visual Basic for Applications' … en dat is het macro-taaltje van MS voor z'n Office-pakketten.
    Dan kan het kloppen dat het niet werkt.
    Het lijkt mij zeer onwaarschijnlijk dat je met die taal zo diep in het systeem kunt duiken …
  • download Visual Studio 2008 ;)
    en ga Visual Basic .NET Leren
  • probeer dan liever de C#-variant.
    Daar ligt de toekomst …
    VB had al eeuwen geleden verbannen moeten worden.


    ;)

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.