2016-09-21 108 views
1

我有一个包含大量页面的单词文档,并且在每个步骤后有一个控制复选框ActiveXWord中的VBA复选框

在文档的末尾有一个完成表,它具有部分的名称,当某个部分的最后一个复选框被选中时,它将该部分表格变为绿色。

因此,对于一个示例:

第1节:

文本

(复选框1)

moretext

(复选框2)

evenmoretext

(复选框3)

完成列表:

第1

我想实现是有一些VBA,将检查,看看是否所有的复选框被选中,然后进行第一部分在最后绿色的桌子上。

我目前有它的工作,所以它变成绿色,但只有当最后一个复选框(3)被选中。

有没有办法做到这一点?

还有另外一个问题:我在文档的顶部有一个按钮,它隐藏了整个文档中的几个部分,当按下时,它会检查它将首先隐藏的任何复选框。 (我使用分页符来显示哪些部分我想隐藏)

这是一个问题,但是因为ActiveX复选框没有隐藏,所以我写了一些VBA而不是使它们超级小,然后调整它们之后的大小完成。

这里是VBA我到目前为止:

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 

回答

1

我不能完全确定你的设计是什么,但假设你有3个复选框,你要隐藏的部分,如果所有的三个检查或(包括重新显示该部分,如果用户取消选中三个中的一个),我建议创建一个单独的功能,在单击任何时候复选框时更新该部分的格式:

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

真棒男人,谢谢寻求帮助,这是一种享受! – Steve101

+0

@ Steve101如果这个答案适合你,你可以通过点击绿色的选中标记来“接受”答案。 – Blackhawk