04. november 2004 - 11:07Der er
16 kommentarer og 1 løsning
Formular og makro (autoudfyldelse)
Jeg har ved at lave en formular, hvor jeg gerne vil have hjælp til 2 ting.
1. Når feltet "tekst1", udfyldes bliver indholdet kopieret til feltet "tekst11".
2. Jeg har lavet en rullelist (Rulleliste1) over forskellige medarbejdere, men vil gerne have, at når der vælges én medarbejder, så kommer vedkommendes telefonnr. med ind i et andet felt (Tekst10).
Hvordan gøres det smartest, jeg tænker på noget med makro, med ved ikke hvordan det skal gøres.
Kunne man eventuelt, til punkt 1, bruge et fill-in felt, så dialogboksen kommer hver gang dokumentet åbnes, og så oplysningerne blive lagt i begge felter. Jeg ved dog ikke helt om det er smart i bruge på denne måde, det kan jeg jo kun finde ud af ved at prøve det ;-)
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Hvis vi tager udgangspunkt i anvendelsen af værktøjslinien "Formularer" - så går jeg ud fra, at telefonnr er oprettet i en anden liste - i samme rækkefølge som medarbejdsnavnene.
Kopier nedenstående kode til udklipsholder...
Makro: Opret en makro i dit dokument (ALT+F8) - vælg i feltet "Makroer i:" - dit dokument. Navngiv makroen til XXX - Opret. I udviklingsværktøjet ses nu den oprettede makro. Marker alt og slet indholdet - indsæt fra udklipsholder nedenstående kode:
Sub kopierIndhold() ActiveDocument.FormFields("tekst11").Result = ActiveDocument.FormFields("tekst1").Result End Sub Sub findTlfnr() Dim ix ix = ActiveDocument.FormFields("rulleliste1").DropDown.Value ActiveDocument.FormFields("tekst3").Result = ActiveDocument.FormFields("rulleliste2").DropDown.ListEntries(ix).Name End Sub
Du skal selv tilrette navne på "Bogmærkerne" - så de passer til dine - altså "Rulleliste2" til din for telefonnr.
Gem koden og luk VisualBasic-vinduet.
I dit dokument: I egenskaber for "tekst1" - Udfør makro ved udgang: vælg KopierIndhold - luk
I egenskaber for "Rulleliste m/medarbejdernavne" - udfør makro ved udgang: vælg FindTlfnr - Luk
Jeg har endnu ikke oprettet tlf. nr., for jeg tænkte at det så kunne blive gjort på den rigtige og letteste måde, hvis du/I kunne forslår hvordan det skulle gøres.
Og ja der er tale om formular-værktøjslinien, og fill-in feltet ligger under Indsæt -> Felt -> Brevfletning -> Fill in, men denne kan jeg bare ikke få til at komme hver gang dokumentet åbnes, desværre, det kunne have været godt.
Makroer, er det nogle som kører automatisk, eller skal der tilføjes f.eks. en genvejstast?
Okay, kopierIndhold fungere godt nok, men findTlfnr synes jeg ikke helt om. Sådan som jeg har forstået det, skulle jeg lave en rulleliste, hvor tlf. nr. står i og i samme rækkefølge som medarbejderne. Men det giver jo 2 rullelister og et tekstfelt, og jeg vil kun have én rulleliste og et tekstfelt som er synligt, kan jeg skjule rulleliste2 på en eller anden måde.
Jeg sidder og overvejer om jeg skulle have oplysningerne om medarbejderne i en simpel access-db, men der skal også tages højde for at brugeren af dokumentet slet ikke har nogle ide om, hverken at rette i formulare eller at rette i en db.
Inden du låser - så marker rullelisten m/telefonnr.
Menulinien : Formater/Skifttype/Skjul-checkboksen sæt flueben! - så er den usynlig.
-
At lægge det i en database - ja det villle være en god ide - og det behøver ikke at være et problem for brugeren - for det hele kan styres og ajourføres fra en Userform (VBA Dialogboks) i word-dokumentet - jeg har for mine kunder - konstrueret mange systemet - netop efter denne filosofi... altså det hele styres fra Word - det kender brugerne!!
Okay, selvfølgelig burde jeg havde tænkt på at skjule den sådanne. Så mangler jeg kun at få alle felter til at blive opdateret ved åbning, for det driller lidt.
Skal det ikke bare være:
Private Sub Document_Open() ActiveDocument.Fields.Update End Sub
Du skriver at felterne skal være opdateret - undskyld med hvad?
Tekstfelter får jo først "indhold" når du indtaster i dem - med mindre de har en "default-værdi" - eller får tilskrevet en værdi via en makro. Rullelisterne har jo fået en defineret værdi - værdierne skulle kunne ses, når du har låst formularen.
Det er fordi, jeg har et slutflet. Du ved "venlig hilsen" og så af brugeren, men den bliver ikke opdateret automatisk, mærkeligt nok. Nu har jeg prøvet at sætte kodestumpen ind, med den bliver kun afviklet hvis jeg laver den public og aktivt vælger at køre den. Den skulle gerne hente brugerens navn.
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.