Ok! Det lyder jo meget let. Men hvis jeg nu i mit program vil teste, om der bliver tastet Alt + HOME og der derefter skal ske en hændelse defineret af mig ..., hvordan kodes det og hvor (keypress, click)?
Og igen. Hvis jeg nu vil kode således, at der efter skrivning i en textbox, skal slettes to bogstaver eller et ord bagud fra markørens standpunkt?
Eks1. command1.(click, keypress) If txtbox.txt = \"Der var engangre...\" (slet \"re\") end if
Eks.2 command1.(click, keypress) If txtbox.txt = \"Der var engang...\" (slet engang) end if
Jeg har tærsket Sendkey igennem og forstår den nu ... DELVIST. Hvordan kan jeg tjekke runtime om de r f.eks. tastes ALT + HOME ( hvorefter min form skal lukke og en anden skal åbne ) ???
Mit udlæg:
If (sendkeys ??? ) = ??? then Form1.hide end if
Derudover:
HVORFOR bliver min Numlock tast slået fra efter hver Sendkey \"session\"??
Sendkeys er kun til at ... sende tastetryk til applikationen; så det klarlagt.
Hvis du f.eks. vil have en tastekombination til f.eks. at lukke din applikation uanset, hvilken control der er aktiv på formen, så skal du først sørge for, at din form checker tastetrykket før de leveres videre til den aktive control på formen:
Me.KeyPreview = True
Herefter kan du bruge KeyPress, keyUp eller evt. KeyDown event\'ene for selve formen.
Hvis du vil arbejde med Shift/Ctrl og Alt tasterne også, så er du nødt til at benytte enten KeyUp eller KeyDown, da KeyPress kun ser på, hvilken \"resultat\"-taste du har trykket - ikke hvilken shift taste. Derfor kan funktionen se ud, som vist herunder:
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) MsgBox KeyCode & \", \" & Shift If (KeyCode = 36) And (Shift = 4) Then DoCmd.Close End Sub
Du skal lige huske at sætte KeyPreview til true for selve formen.
Linien med msgbox kan du bruge til at finde talkombinationer til andre tastetryk. Bemærk lige, at du skal fjerne boxen fra skærmen ved at klikke med musen - ellers får du ikke særlig meget ud af denne funktion !!
Den linie sletter du bare, når det ´hele skal køre. 36,4 er et tryk på Home-tasten med Alt holdt nede.
Shift = 1 Ctrl = 2 Alt = 4 Det er bitmæssigt implementeret, så
Jeg tror at java også kan nøjes med end istedet for endif, så du har faktisk lavet en if sætning, der ikke laver noget, hvis udtrykket er falsk - og heller ikke laver noget, hvis udtrykket er sandt.
Private Sub UserForm_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If (KeyCode = 66) And (Ctrl = 2) Then DoCmd.Close
End Sub
Jeg har også prøvet med;
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) MsgBox KeyCode & \", \" & Shift If (KeyCode = 36) And (Shift = 4) Then DoCmd.Close End Sub
Det virker simpelthen bare ikke.
Me.Keypreview = True VIL VBA bare ikke acceptere. Iøvrigt skrev jeg koden (Me..) i Userform1.Activate
Keypreview findes hverken i min properties eller open for Userform\'en!!!
Hvis du har en mail adresse (og du gider) kan vi fortsætte din lille udfordring pr. mail. og min lille hovedpine Så kan jeg sende dig et skærmdump af hvad jeg har ???
( Løser du mit problem giver jeg dig 100 p. for ulejligheden, ok? )
Den har jeg også været ude efter, men har indtil nu ikke haft held til at kode det eller få et bud på hvordan det skal gøres.
Jeg har dog for lang tid siden fået forklaret, at det ikke kan lade sig gøre i VBA, kun i VB, idet VBA ikke har kontrollen Time.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.