Hej, jeg forstår ikke hvorfor jeg i en VBA form ikke kan lave en form for catch all for tastetryk. jeg har en form, og hertil vil jeg bare have hvis der trykkes enter (ligemeget hvor cursor står), så skal den starte funktion
altså: Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = vbKeyReturn Then start_funktion End Sub
denne bliver bare aldrig triggeret... I dont get it?
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Hvilket program benytter du? Når du siger VBA, kan det være Word, Access, Excel eller et andet Office-program. I nogle af dem, ved jeg, at man skal sætte egenskaben "KeyPreview" (tastgennemsyn) til True for at kunne fange tastetryk på formularniveau.
Men da spørgsmålet går på en VBA-form, så er sansynligheden størst for at det er en MS-program (Excel, Word, Access, Outlook, Powerpoint, Visio, Project m.m.).
Bortset fra det, er din kode ikke magen til Thefoneck's? Eneste forskel er at du referere til KeyAscii = 13, hvor han bruger Keyascii = vbKeyReturn. Men vbKeyReturn er jo bare en konstant med værden 13.
Well, det virker altså ikke... mit problem er mere - der går aldrig ned i funktionen. den springer den faktisk over. jeg har ikke sådan en KeyPreview egenskab jeg kan sætte ! desværre jeg bruger excel 97
Hej Martin, det er rigtigt hvad du siger, men prøv at smid en tekstbox eller andet ind i formen, så virker det ikke længere. Desværre. OG så er det jo irriterende at man ikke kan fange enter tasten i et tekstfelt, for så kunne jeg gøre det, men enter acter bare eom tab!
ja, jeg vil køre en funktion, og jeg opdagede lige at der er noget som enterKeyBehaviour, sættes den og multiline tirl true vil enter trigger textbox_change... - ikke keypress.
Prob er så bare... hvordan fanger jeg keypress i den change? textbox_Change(ByVal KeyAscii As MSForms.ReturnInteger) virker fx ikke da _change jo normalt ikke tager inputs.
Hey, vi misforstår hinanden jeg vil gerne have at en bruger kan taste enter, jeg vil bare fange det når vedkommende gør det. Forstil dig du har en lommeregner, der er det en fordel når du har skrevet dine to tal, at så kan du taste enter - så musen ikke skal bruger hele tiden. Det er den effetkt jeg ønsker.
Derfor: Fang tryk - hvis enter, kør funktion. Casen er nu at jeg ikke kan finde ud af hvad brugeren har trykket. i funktionen
Private Sub txtBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) kan jeg fange alle testetryk - pånær enter, da den jo laver multiline
enter vil derimod starte funktionen Private Sub txtBox_Change() men her kan jeg ikke fange at keyascii = 13, da den funktion ikke returnerer hvilken tast brugere trykkede...? so Im stuck
Prøv at svar på følgende: Hvad skal der ske når brugeren taster ENTER i dit program. Skal fokus blot flyttes fra en kontrol til en anden?
Den funktion du taler om igen og igen - HVAD gør den?????????
Jeg tror du skal glemme hvad du har skrevet tidliger, og fortælle hvad det er for et program du vil lave, og hvad der skal ske når nogen trykker enter.
d er nemlig lige hvad den gør, men som jeg skrev tidligere, så er fokus på tidspunktet en tekstbox. Det sjove er at selvom du har mulitline mv. på true, så vil enter ikke trigger keypress eventen... og så er den svær at fange
Nu har jeg forsøgt selv at lave en form, og jeg kan da godt se, at såsnart der kommer en textbox på formen, vil den ALTID have fokus. Kun når der ikke er kontroller på formen, kan du bruge UserForm_KeyPress
Og jeg kan godt se, at keypress-eventen for en textbox ikke lbiver triggeret - heller ikek keydown og keyup.
Beklager, at jeg ikke helt fik fat i dit problem til at starte med. Og beklager, at jeg ikke lige kan løse det. Andre?
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.