2016-09-21 4 views
1

J'ai un document Word qui a beaucoup de pages, et des sections qui, après chaque étape, ont une case à cocher .cases à cocher VBA dans Word

À la fin du document, il y a une table de complétion qui a le nom des sections et quand la dernière case à cocher pour une certaine section est vérifiée, elle transforme cette partie du tableau en vert.

Donc, pour un exemple:

SECTION 1:

Texte

(1 Checkbox)

moreText

(2 cases à cocher)

evenmoretext

(Checkbox 3)

Liste d'achèvement:

Section 1

Ce que je suis en train de réaliser est d'avoir une vba qui va vérifier pour voir si toutes les cases sont cochées, puis faire la section une partie sur la table à la fin du vert.

Je l'ai actuellement en cours de fonctionnement donc il devient vert mais seulement quand la dernière case à cocher (3) est cochée.

Y a-t-il un moyen de le faire?

Il y a aussi un autre problème: j'ai un bouton en haut du document qui cache quelques sections dans le document, qui, lorsqu'il est pressé, coche toutes les cases qu'il va cacher en premier. (J'utilise les sauts de page pour montrer les parties que je veux cacher)

Ceci est un problème mais parce que les cases à cocher ActiveX ne se cachent pas, j'ai donc écrit un VBA qui les rend super minuscules, puis les redimensionne après c'est fait.

Voici l'ABV je jusqu'à présent:

Private Sub DTSCheckBox_Click() 

    If (DTSCheckBox.Value = True And AdminCheckBox.Value = True) Then 
     Section2Complete.Caption = "Complete" 
     Section2Complete.BackColor = RGB(0, 255, 0) 
     CheckAndAmmendBy.Caption = UpgradeTechnic.Text 
    Else 
     Section2Complete.Caption = "Outstanding" 
     Section2Complete.BackColor = RGB(255, 0, 0) 
     CheckAndAmmendBy.Caption = "" 
    End If 

End Sub 

Private Sub V4ToV6Button_Click() 

    ActiveDocument.Sections(2).Range.Font.Hidden = True 
    ActiveDocument.Sections(4).Range.Font.Hidden = True 
    ActiveDocument.Sections(6).Range.Font.Hidden = True 
    ActiveDocument.Sections(8).Range.Font.Hidden = True 
    Section15Complete.Caption = "": Section15Complete.BackColor = RGB(255, 255, 255) 
    ActiveDocument.Tables(1).Rows(15).SetHeight 1, wdRowHeightExactly 
    SQLScriptCheckbox.Value = True 
    SQLScriptCheckbox.Height = 1 
    SQLScriptCheckbox.Width = 1 
    SQLScriptCheckbox.Enabled = False 
    RestoreEmailScriptCheckBox.Value = True 
    RestoreEmailScriptCheckBox.Height = 1 
    RestoreEmailScriptCheckBox.Width = 1 
    RestoreEmailScriptCheckBox.Enabled = False 
    SQLCleanScriptCheckBox.Value = True 
    SQLCleanScriptCheckBox.Height = 1 
    SQLCleanScriptCheckBox.Width = 1 
    SQLCleanScriptCheckBox.Enabled = False 
    SandboxJobHasBeenSetUpCheckBox.Value = True 
    SandboxJobHasBeenSetUpCheckBox.Width = 1 
    SandboxJobHasBeenSetUpCheckBox.Height = 1 
    SandboxJobHasBeenSetUpCheckBox.Enabled = False 

End Sub 

Répondre

1

Je ne suis pas sûr de ce que votre conception est, mais en supposant que vous avez 3 cases à cocher et que vous voulez masquer la section si les trois sont vérifiés ou afficher la section autrement (y compris re-montrant la section si l'utilisateur désélectionne un des trois), je suggère la création d'une fonction distincte qui met à jour le format de la section à tout moment une case à cocher est cliqué:

Private Sub CheckBox21_Click() 
    UpdateSection 
End Sub 

Private Sub CheckBox22_Click() 
    UpdateSection 
End Sub 

Private Sub CheckBox23_Click() 
    UpdateSection 
End Sub 

Public Sub UpdateSection() 
    If CheckBox21.Value = True And CheckBox22.Value = True And CheckBox23.Value = True Then 
     'Code to hide section 
    Else 
     'Code to show section 
    End If 
End Sub 
+0

homme impressionnant, merci pour l'aide, ça marche un régal! – Steve101

+0

@ Steve101 Si cette réponse a fonctionné pour vous, vous pouvez "Accepter" la réponse en cliquant sur la coche verte. – Blackhawk