#vba #ms-word #combobox #userform
Вопрос:
У меня есть форма пользователя, которая снимает защиту с документа, чтобы информация могла быть введена в документ, и после того, как она защитит мой документ. Все мои субмарины настроены и работают в дополнение к той, которая создает мне проблемы:
Пример sub, который работает:
Private Sub ComboBox5_Change()
ActiveDocument.Unprotect "password"
Dim ComboBox5 As Range
Set ComboBox5 = ActiveDocument.Bookmarks("bmragpd").Range
ComboBox5.Text = Me.ComboBox5.Value
If Me.ComboBox5.Value = "No" Then
ComboBox5.Text = "205.55a"
End If
If Me.ComboBox5.Value = "Yes" Then
ComboBox5.Text = ""
End If
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True, Password:="password"
End Sub
По какой-то причине этот подраздел не работает и скажет, что документ уже не защищен, есть какие-либо предложения о том, как это решить? Я попытался удалить незащищенный на combobox6, однако это, похоже, тоже не работает:
Private Sub ComboBox6_Change()
ActiveDocument.Unprotect "password"
Dim rngComboBox6 As Range
Dim sssaText As String
Dim iiia As Integer
Set rngComboBox6 = ActiveDocument.Bookmarks("bmfcs").Range
sssaText = ComboBox6.Value
If Me.ComboBox6.Value = "Yes" Then
For iiia = 1 To 1
sssaText = sssaText amp; Chr(13) amp; "200" _
amp; Chr(13) amp; "200.1" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "OEBS" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "21c" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "22c" _
amp; Chr(13) amp; "Yes" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "Yes" _
amp; Chr(13) amp; "Two" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "ES2a.1" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "222" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "222a" _
amp; Chr(13) amp; "222b" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "3.a.1" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "NA" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "I. TuuVa"
Next iiia
sssaText = sssaText amp; Chr(13) amp; "717217" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "1212" _
amp; Chr(13) amp; "" _
amp; Chr(13) amp; "D.1" _
amp; Chr(13) amp; "F2B-4"
End If
rngComboBox6.Text = sssaText
ActiveDocument.Bookmarks.Add "bmfcs", rngComboBox6
If Me.ComboBox6.Value = "No" Then
ComboBox6.Text = ""
End If
ActiveDocument.Protect wdAllowOnlyFormFields, NoReset:=True, Password:="password"
End Sub
Ответ №1:
Первый End If
находится не в том месте. Вы добавляете текст в документ независимо от значения поля со списком.
Не рекомендуется использовать событие изменения элемента управления для фиксации изменений в документе. Помимо всего прочего, это не позволяет пользователю отменять без внесения изменений.
Вместо этого используйте кнопку OK/Применить/Готово.
Затем вам нужно только один раз снять/повторно защитить документ.