Странное поведение при наличии командных кнопок. Слово VBA - PullRequest
2 голосов
/ 03 мая 2019

Создайте документ с поддержкой макросов, у которого сначала есть рабочий макрос, но затем он перестает работать с вставкой кнопки.Инструкции ниже.

Код:

Sub UpdateOptions()
  Dim bProtected As Boolean
  'Unprotect the file
  If ActiveDocument.ProtectionType <> wdNoProtection Then
    bProtected = True
    ActiveDocument.Unprotect Password:=""
  End If

  Select Case ActiveDocument.FormFields("Bookmark0").Result
    Case "Bookmark1"
        ActiveDocument.Bookmarks("Bookmark1").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark2"
        ActiveDocument.Bookmarks("Bookmark2").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark3"
        ActiveDocument.Bookmarks("Bookmark3").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
  End Select
  If bProtected = True Then
    ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, _
        NoReset:=True, _
        Password:=""
  End If
End Sub

Шаги по настройке документа Word:

  • Введите вдокумент: Закладка0
  • Вставить устаревшее поле раскрывающейся формы

    • Список записей: Закладка1, Закладка2, Закладка3
    • Имя: Закладка0
    • Запуск макроса при выходе: UpdateOptions (код выше)
  • После раскрывающегося меню введите: Enter, Enter (вставить два абзаца)

  • Тип: Bookmark1
  • Введите второе поле выпадающего списка в устаревшем формате

    • Список: 1, 2, 3.
    • Имя: Bookmark1
  • После раскрывающегося списка введите: Enter, Enter (вставьте два абзаца)

  • Тип: Закладка 2
  • Вставьте третье выпадающее поле формы выпадающего списка

    • Список: 1, 2, 3.
    • Имя: Закладка2
  • Послев раскрывающемся списке введите: Enter, Enter (вставьте два абзаца)

  • Типe: Bookmark3
  • Вставить четвертое устаревшее поле формы раскрывающегося списка
    • Список: 1, 2, 3.
    • Имя: Bookmark3

Ваш документ должен выглядеть следующим образом:

Bookmark0 [выпадающий список]

Bookmark1 [выпадающий список]

Bookmark2 [выпадающий список *

Bookmark3 [выпадающий список]

  • Сохранить документ как документ с поддержкой макросов (docm).
  • Защита документа для заполнения в виде формы

Тестирование:

  • Изменять параметры первого сбрасывания только из доступных перечисленных параметров (Bookmark1, Bookmark2, Bookmark3)
  • Каждый раз, когда выизменив свой выбор, вы будете перенаправлены в соответствующее поле формы раскрывающегося списка закладок.
  • Должно работать должным образом.

Конфликт кнопок

  • Разблокировать документ
  • Вставить кнопку в конце документа под закладкой3 [Кнопка]

Ваш документ должен выглядеть так же, как и выше, но теперь с кнопкой:

Bookmark0 [выпадающий список]

Bookmark1 [выпадающий список]

Bookmark2 [выпадающий список]

Закладка3 [выпадающий список]

[Кнопка]

  • Защита документа для заполнения в виде

Конфликт кнопок тестирования:

  • Изменить выбор Bookmak0 из (Bookmark1, Bookmark2, Bookmark3)
  • Каждый раз, когда вы изменяете свой выбор, вы НЕ будете перенаправлены в соответствующий раскрывающийся список закладок.Поле формы.
  • Каждый раз, когда вы изменяете свой выбор, вы будете перенаправлены в поле после соответствующего соответствующего поля формы закладки Закладка.
  • Макрос не работает должным образом с наличием кнопки.
  • Снимите защиту с документа, удалите кнопку, заново защитите документ, он снова будет работать нормально.

Я также разместил этот вопрос по ссылкам ниже (Доступные файлыдля загрузки тамe .: http://www.vbaexpress.com/forum/showthread.php?65092-Odd-behavior-when-Command-Buttons-are-present

http://www.msofficeforums.com/word-vba/42422-odd-behavior-when-command-buttons-present.html

eileenslounge.com / viewtopic.php? f = 26 & t = 32411

1 Ответ

0 голосов
/ 07 мая 2019

Причина нечетного поведения не найдена.

В качестве обходного пути я просто выбрал закладку до предполагаемого, как показано в приведенном ниже коде.

Все работает с помощью командыКнопки.

Sub UpdateOptions()
Dim bProtected As Boolean
'Unprotect the file
If ActiveDocument.ProtectionType <> wdNoProtection Then
    bProtected = True
    ActiveDocument.Unprotect Password:=""
End If

Select Case ActiveDocument.FormFields("Bookmark0").Result
    Case "Bookmark1"
        ActiveDocument.Bookmarks("Bookmark0").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark2"
        ActiveDocument.Bookmarks("Bookmark1").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
    Case "Bookmark3"
        ActiveDocument.Bookmarks("Bookmark2").Select
        SendKeys "%{down}"  'Displays choices in drop-down field
End Select
If bProtected = True Then
    ActiveDocument.Protect _
        Type:=wdAllowOnlyFormFields, _
        NoReset:=True, _
        Password:=""
End If
End Sub

Спасибо всем, кто развлекал эту тему.

Раудель

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...