2016-09-21 6 views
1

У меня есть документ с текстом, который содержит много страниц и разделов, которые после каждого шага имеют элемент управления ActiveX.VBA checkboxes в Word

В конце документа есть таблица завершения, которая имеет название разделов и когда установлен последний флажок для определенного раздела, она превращает эту часть таблицы в зеленый.

Таким образом, для примера:

РАЗДЕЛ 1:

Текст

(Чекбокс 1)

moretext

(Чекбокс 2)

evenmoretext

(Checkbox 3)

список Завершение:

Раздел 1

То, что я пытаюсь достичь есть VBA, которая будет проверять, чтобы увидеть, если все флажки галочки, а затем сделать раздел 1 часть на столе в конце зеленый.

У меня в настоящее время это работает, поэтому он становится зеленым, но только тогда, когда установлен последний флажок (3).

Есть ли все равно для этого?

Есть и другое: у меня есть кнопка в верхней части документа, которая скрывает несколько разделов по всему документу, который при нажатии проверяет все флажки, которые он будет скрывать первым. (Я использую разрывы страниц, чтобы показать, какие части я хочу скрыть)

Это проблема, однако, поскольку флажки ActiveX не скрывают, и поэтому я написал несколько 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