Word

时间:2016-09-21 15:19:42

标签: vba checkbox ms-word activex word-vba

我有一个包含大量页面的word文档,以及每个步骤后面都有ActiveX控件复选框的部分。

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

举个例子:

第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 个答案:

答案 0 :(得分: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