09. april 2013 - 09:02Der er
3 kommentarer og 1 løsning
Makro til at slette flere afsnit som indeholder tekstfelter
Jeg har et dokument, som er opbygget nogenlunde således:
Overskrift 1 (tekstfelt) Afsnit 1 med tekst (tekstfelt) Afsnit 2 med tekst (tekstfelt) Afsnit 3 med tekst (tekstfelt)
Når jeg trykker - (minus), så slettes de enkelte felter, og brugeren har så mulighed for at fravælge den tekst, som ikke skal med i dokumentet. Men jeg er interesseret i, at man også kan slette overskrift 1 og alle afsnit på en gang, hvis man trykker minus i overskriften.
Jeg har brugt følgende makro til at slette felterne med: Sub SletTomtFelt1()
Dim f As FormField Set f = ActiveDocument.FormFields("Tekst1") If f.Result = "-" Then 'fjern bestkyttlse UnprotectForFormFields ActiveDocument f.Range.Paragraphs(1).Range.Delete 'beskyt igen ProtectForFormFields ActiveDocument End If
End Sub
Jeg har efterfølgende prøvet at ændre tallet i f.Range.Paragraphs til 4, men så kommer der en fejlmeddelelse.
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
Er overskrifterne og de tilhørende felter i en tabelcelle? Hvis ikke, er overskriften formateret med typografien Overskrift 1. Hvis ikke, hvilke kendetegn er er så på overskriften.
Når du skriver 4 i stedet for 1, prøver du at slette 4. afsnit i det afsnit, som feltet er i, og et sådant afsnit findes jo i sagens natur ikke - derfor får du fejl.
Se bort fra mine spørgsmål ovenfor. Jeg kan se, at du kun vil slette alle afsnit, hvis du er i overskriften.
Du kan gøre sådan - og makroen skal kun knyttes til felter i overskrifter:
Sub SletTomtFeltInkl3AfsnitEfter()
Dim f As FormField Dim rngParas As Range
Set f = ActiveDocument.FormFields("Tekst1")
If f.Result = "-" Then 'fjern bestkyttlse UnprotectForFormFields ActiveDocument 'definer range, som indeholder afsnit m. felt + 3 næste afsnit Set rngParas = f.Range.Paragraphs(1).Range rngParas.MoveEnd unit:=wdParagraph, Count:=3 rngParas.Delete 'beskyt igen ProtectForFormFields ActiveDocument End If
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.