23. august 2002 - 08:56Der er
13 kommentarer og 1 løsning
VBA & formularer
Jeg har en formular med 2 felter (og én knap), 1. felt kaldet "stilling", 2. felt kaldet "navn" (i egenskaben "bookmark" for felterne). Jeg håbede at nedenstående kode ville springe til det første felt, når der blev trykket på knappen, men i stedet springes der til "feltet efter", hvilket er feltet "navn". HVORFOR? Og hvordan skal koden se ud hvis markøren skal stoppe i "stilling"? Er det muligt at lave et eller andet henad: ActiveDocument.formfields.StepOneTabBack
Private Sub CommandButton1_LostFocus() ActiveDocument.FormFields("stilling").Select End Sub
Det er der selvfølgelig en grund til: Når brugeren udfylder formularen og kommer til knappen, skal det være muligt at tabulere videre, men her opstår problemet, for hvis jeg ingen kode har, tabuleres der til den del af formularen som det administrative personale skal udfylde, og som jeg helst ikke vil have brugeren til at "forvirres af" under udfyldningen af formularen...
Jeg har kigget på dit dokument og har ingen gode bud lige nu på, hvorfor det virker ved klik men ikke ved LostFocus. Jeg arbejder videre med sagen.
En midlertidig løsning kan være at lade knappen "hoppe" til feltet før det ønskede, i eksemplet du har sendt til det sidste felt i formularen. Det løser i hvert fald problemet hos mig. Jeg kigger videre på årsagen.
Formularfelter er min specialitet *S* Prøv også at sende dokumentet til mig, så kikker jeg også på det.
Nu kender jeg ikke din problemstilling, men det lyder som om du gerne vil have dokumentet udfyldt i 2 omgange - første gang af en almindelig bruger og anden gang af det administrative personale, der udfylder nogle ekstra formularfelter. I det tilfælde kunne du låse formularfelterne (til det administrative personale) for indtastning (altså fjernehakket i tillad udfyldning) og derefter udarbejde en makro der låser alle felterne op, som det administrative personale bruger.
Forøvrigt så ser koden således ud *S*
Sub LåsFomrularfelterOp() For Each formf In ActiveDocument.FormFields formf.Enabled = True Next End Sub
puppetmaster> Fra Jay Freedman, Word MPV har jeg modtaget følgende forklaring, som samtidigt antyder, at der ikke er nogen løsning:
can explain what's happening, but I don't think I have any solution for what you want to do...
When the command button has the focus and you press the Tab key, the events occur in this order:
- The LostFocus procedure executes because the button is *about to* lose focus. The "stilling" form field receives focus.
- Only now is the Tab keypress evaluated and acted upon, and focus is transferred to the "next available object after the current one" -- that is, the field after "stilling".
Idéen med at gå til det sidste felt i stedet er derfor nok det bedste jeg kan tilbyde dig.
Undskyld jeg sover. Du skal selvfølgelig bare ændre den til GotFocus. Så udløses så mister den ikke focus før tabulatorfunktionen er udfør og så hopper den til stilling uanset om du tabulerer til knappen eller klikker på den.
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.