Avatar billede LS-Falster Juniormester
25. november 2016 - 10:41 Der er 1 kommentar og
1 løsning

Makro til at slette formfield eller formfield + det efterfølgende afsnit i Word

Jeg har en makro, som jeg gerne vil have udvidet. Makroen sletter et tekstfelt, hvis der tastes minus (-) i feltet. 

Makroen ser sådan ud:

Sub SletKunFeltet()

  Dim f As FormField
  Set f = ActiveDocument.FormFields("SletKunFeltet2")
      If f.Result = "-" And f.Type = wdFieldFormTextInput Then
        f.Delete
      End If
End Sub

Jeg kunne godt tænke mig, at tekstfeltet og det efterfølgende afsnit slettes, hvis man taster plus (+) i feltet.

Jeg har en anden kode, som jeg har prøvet at flette ind, men jeg kan ikke få det til at virke. Koden er flg.:

If f.Result = "+" Then
        'fjern beskyttelse
        UnprotectForFormFields ActiveDocument
        f.Range.Paragraphs(1).Range.Delete
        'beskyt igen
        ProtectForFormFields ActiveDocument
      End If
Avatar billede Lene Fredborg Ekspert
25. november 2016 - 11:25 #1
Følgende makro gør muligvis det, du vil. Se kommentarerne i koden. Jeg har lavet den, så den virker med både - og +. Men hvis indholdet er i en tabelcelle, så kan afsnittet efter formularfeltet være det forkerte ? afhænger indholdet i cellerne. Så må du forklare mere præcist, hvad der gælder for det efterfølgende afsnit (er det i samme celle som formularfeltet, i en celle under eller andet).

Sub SletFeltOgEvtAfsnitEfter()
    'Sletter TextFormField hvis -
    'Sletter TextFormField og afsnit efter hvis +
   
    Dim f As FormField
    Dim rngField As Range
   
    'Ret bogmærkenavn til det rigtige
    Set f = ActiveDocument.FormFields("Text1")

    If f.Type = wdFieldFormTextInput Then
        If f.Result = "-" Then
            f.Delete
        ElseIf f.Result = "+" Then
            'Slet først afstnit efter, hvis det findes
            Set rngField = f.Range
            If Not rngField.Paragraphs.First.Next Is Nothing Then
                'fjern beskyttelse
                UnprotectForFormFields ActiveDocument
                rngField.Paragraphs.First.Next.Range.Delete
                ProtectForFormFields ActiveDocument
            End If
           
            f.Delete
           
        End If
    End If
   
    Set f = Nothing
    Set rngField = Nothing
End Sub
Avatar billede LS-Falster Juniormester
25. november 2016 - 12:35 #2
Hej Lene
Den virker perfekt. Mange tak for hjælpen.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Tag et kursus i Word og øg effektiviteten

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester