Word VBA Kontrollkästchen ausblenden

Moderator: ModerationP

Word VBA Kontrollkästchen ausblenden

Beitragvon tijiwiwihead » 03. Aug 2021, 07:50

[edit by CaBe: Code als Code formatiert]
Hallo Community,
Ich habe folgende Vorlage und ein paar Probleme, die ich nicht lösen kann. Ich hoffe ihr findet den Fehler oder könnt einen Tipp geben.

Vorlage:
- Entwerfe eine Checkliste mit Kontrollkästchen
- Füge 3 Buttons ein, die jeweils eine Liste generieren, bearbeitbar machen und speichern
- Vorgaben der Buttons:
Generieren: Alle NICHT angekreuzten Kontrollkästchen sollen eingegraut werden
Bearbeiten: ALLE Kontrollkästchen sollen wieder schwarz eingefärbt werden
Speichern: Alle NICHT angekreuzten Kontrollkästchen sollen verschwinden (also nicht sichtbar sein), die Kontrollkästchen per se sollen nicht sichtbar sein sondern nur der Text dahinter, die Buttons sollen nicht sichtbar sein und bei dem "Speichern Unter" Feld soll PDF voreingestellt sein.

Soweit so gut. Das bekomme ich auch alles hin. Nur habe ich jetzt das Problem, dass wenn ich Liste Speichern drücke, dass sich die Buttons übereinanderschieben und ich nur noch den Button Liste Speichern sehe. Des Weiteren, wenn ich zweimal hintereinander Liste Speichern drücke, löscht er mir Sachen, die eigentlich angekreuzt sind und nicht verschwinden dürften.... kann mir jemand helfen?

Hier meine Codes:

Liste Generieren:
Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim FF As Formeln

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF in ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
If FF.Result = False Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.ColorIndex = wdGray25
End With

End If
End If
Next FF
End Sub


Liste bearbeiten
Code: Alles auswählen
Private Sub CommandButton2_Click()
Dim FF as Formeln
Dim myInShape As InlineShape

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF in ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.Hidden = False
End With

End if
Next FF

For Each myInShape in ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = False
End If
Next myInShape

End Sub


Liste Speichern
Code: Alles auswählen
Private Sub CommandButton3_Click()

Dim FF As Formeln
Dim Absatz As Paragraph
Dim myInShape As InlineShape
Dim shpShape As Shape

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF in ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
If FF.Result = False Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.Hidden = True
.Collage wdCollapsEnd
End With
End If
End If
Next FF

For Each FF in ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
FF.Range.Font.Hidden = True
End If
Next FF

For Each myInShape in ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = True
End If
Next myInShape

With Application.Dialogs(wdDialogFileSaveAs)
.Format = 17
.Show
End With

End Sub

Leider ist der Code nicht kopiert, da Firmenrechner nicht am Internet angeschlossen. Also alles abgeschrieben und evtl Tippfehler.... Kann mir jemand mit den oben genannten Problemen helfen?

Vielen Dank im Voraus
tijiwiwihead
 

Re: Word VBA Kontrollkästchen ausblenden

Beitragvon tijiwiwihead » 03. Aug 2021, 14:15

So konnte die Codes jetzt doch kopieren. Hier die Codes ohne Schreibfehler:

Private Sub CommandButton1_Click()
Dim FF As FormField

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
If FF.Result = False Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.ColorIndex = wdGray25
End With

End If
End If
Next FF
End Sub

Private Sub CommandButton2_Click()
Dim FF As FormField
Dim myInShape As InlineShape

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.ColorIndex = wdBlack
.Range.Font.Hidden = False
End With

End If
Next FF

For Each myInShape In ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = False
End If
Next myInShape

End Sub

Private Sub CommandButton3_Click()

Dim FF As FormField
Dim Absatz As Paragraph
Dim myInShape As InlineShape
Dim shpShape As Shape


If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
If FF.Result = False Then
FF.Select
With Selection
.Expand Unit:=wdParagraph
.Range.Font.Hidden = True
.Collapse wdCollapseEnd
End With
End If
End If
Next FF

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
FF.Range.Font.Hidden = True
End If
Next FF



For Each myInShape In ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = True
End If
Next myInShape


With Application.Dialogs(wdDialogFileSaveAs)
.Format = 17
.Show
End With

End Sub
tijiwiwihead
 

Re: Word VBA Kontrollkästchen ausblenden

Beitragvon theoS » 03. Aug 2021, 21:24

Code-Tags wären nicht schlecht. Kannst du auch selber machen und dich nicht auf einen der Mods verlassen.
Dein Code arbeitet mit Select, da kann schon mal was unvorhergesehenes passieren.
Hab das mal umgeschrieben dass du ohne Select auskommst, dann hat es bei mir zumindest ohne zicken funktioniert.
Code: Alles auswählen
Private Sub CommandButton2_Click()
Dim FF As FormField, donk As Paragraph
Dim myInShape As InlineShape

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
Set donk = FF.Range.Paragraphs(1)
With donk
.Range.Font.ColorIndex = wdBlack
.Range.Font.Hidden = False
End With

End If
Next FF

For Each myInShape In ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = False
End If
Next myInShape

End Sub

Code: Alles auswählen
Private Sub CommandButton2_Click()

Dim FF As FormField
Dim Absatz As Paragraph
Dim myInShape As InlineShape
Dim shpShape As Shape


If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then
ActiveDocument.Unprotect
End If

For Each FF In ActiveDocument.FormFields
If FF.Type = wdFieldFormCheckBox Then
    If FF.Result = False Then
        With FF.Range.Paragraphs(1)
        .Range.Font.Hidden = True
        End With
       FF.Range.Font.Hidden = True
    Else
    FF.Range.Font.Hidden = True
    End If
End If
Next FF

For Each myInShape In ActiveDocument.InlineShapes
If myInShape.Type = wdInlineShapeOLEControlObject Then
myInShape.Range.Font.Hidden = True
End If
Next myInShape


With Application.Dialogs(wdDialogFileSaveAs)
.Format = 17
.Show
End With

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5724
Registriert: 19. Apr 2008, 00:14

Re: Word VBA Kontrollkästchen ausblenden

Beitragvon Gast » 04. Aug 2021, 05:51

Vielen Dank theoS!
Bei mir klappt es jetzt auch ohne Probleme... Danke dir vielmals!
Gast
 


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste