Sub SletIkkeUdfyldtSuppAdr() Dim f As ContentControl For Each f In ThisDocument.ContentControls If f.Title = "Indtast_supplerende_adresse" And (f.Range.Text) = f.PlaceholderText Then f.Delete End If Next End Sub
Supertekst: ContentControls og FormFields er to forskellige ting. Derfor vil makroen ikke virke.
Lars: Et opklarende spørgsmål: Længden af navnet "Indtast_supplerende_adresse" tyder på, at du ikke navngiver FormFields ved at benytte egenskaberne for felterne (åbn f.eks. dialogboks med egenskaber ved at dobbeltklikke på et FormField). Der kan du give feltet et bogmærkenavn, men længden er begrænset til 20 tegn mens bogmærker oprettet via dialogboksen Bogmærke kan have 40 tegn. Er "Indtast_supplerende_adresse" navnet på et bogmærke, du har oprettet via dialogboksen Bogmærke? Det har betydning for, hvordan makroen til sletning skal se ud.
NB Det er enklere og mere sikkert at navngive FormFields via de tilhørende egenskaber, for så kan du f.eks. ikke komme til at slette et "løstgående" bogmærke af vanvare.
Det er et Formfield, og du har selvfølgelig ret mht. længden af bogmærket i Formfield-"boksen". Jeg havde bare benyttet det lange bogmærkenavn som et eksempel. Det har jeg nu omdøbt til "Supplerende-adresse".
I stand corrected... havde ikke lige tjekket under 'Ældre funktioner', da jeg ikke ku finde noget der lignede et tekstfelt under Indsæt >> Hurtige dele >> Felt... :-)
Hos mig brokker den sig altså over bindestreg, så jeg har valgt at bruge "Supplerende_adresse" med understreg.
Men måske denne virker bedre:
Sub SletIkkeUdfyldtSuppAdr() Dim f As FormField For Each f In ThisDocument.FormFields If f.Type = 70 Then If f.Name = "Supplerende_adresse" _ And (f.TextInput.Default = f.Result Or Trim(f.Result) = "") Then f.Delete End If End If Next End Sub
Den virker og så alligevel ikke. Når jeg kører makroen direkte fra min skabelon, så fungerer det fint. Når jeg så kører makroen fra en kopi af skabelonen, virker den ikke. Jeg har både lagt makroen i et module, i This Document og både i selve skabelonen og også i normal.dot skabelonen. Men det virker så bare ikke, så snart jeg får en kopi af skabelonen?????
Lars: Info, som kan være til hjælp: ThisDocument refererer altid til det dokument, som makroerne findes i. ActiveDocument er det dokument, der er fremme på skærmen i Word. Hvis man laver makroer, som hopper rundt i flere dokumenter, er det risikabelt at benytte ActiveDocument, for det kan jo være, at det ikke længere er det rigtige dokument. Så bør man i stedet lave en variabel som f.eks. her: Dim oDoc as Document og på det første tidspunkt, hvor man er sikker på, at ActiveDocument er det rigtige dokument: Set oDoc = ActiveDocument Derefter kan man bruge oDoc, når der skal ske noget med det dokument (f.eks. i eksemplet her: For Each f In oDoc.FormFields). Man kan på den måde have flere dokumenter i spil med hver sin entydige reference, og man er altid sikker på at have fat i det rigtige dokument.
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.