VBA Word 中的复选框
VBA checkboxes in Word
我有一个 word 文档,它有很多页,每个步骤后的部分都有一个 ActiveX
控制复选框。
在文档末尾有一个补全 table,其中包含各部分的名称,当某个部分的最后一个复选框被选中时,它会变成 table 绿色.
举个例子:
第 1 节:
正文
(复选框 1)
更多文字
(复选框 2)
evenmoretext
(复选框 3)
完成名单:
第 1 部分
我想要实现的是有一些 vba 将检查是否所有的复选框都被勾选,然后在最后的 table 上将部分设为绿色.
我目前正在使用它,所以它会变成绿色,但只有当最后一个复选框 (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
我不太确定你的设计是什么,但假设你有 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
我有一个 word 文档,它有很多页,每个步骤后的部分都有一个 ActiveX
控制复选框。
在文档末尾有一个补全 table,其中包含各部分的名称,当某个部分的最后一个复选框被选中时,它会变成 table 绿色.
举个例子:
第 1 节:
正文
(复选框 1)
更多文字
(复选框 2)
evenmoretext
(复选框 3)
完成名单:
第 1 部分
我想要实现的是有一些 vba 将检查是否所有的复选框都被勾选,然后在最后的 table 上将部分设为绿色.
我目前正在使用它,所以它会变成绿色,但只有当最后一个复选框 (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
我不太确定你的设计是什么,但假设你有 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