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

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