Excel вылетает без ошибки при вызове form.Controls.Add - PullRequest
0 голосов
/ 05 декабря 2018

Excel 2016 версия 1811 (сборка 11029.20079 "нажми и работай") вылетает без ошибок, когда следующий код вызывается из взаимодействия пользователя с пользовательской формой.Дело в том, что он падает только в этой (main) пользовательской форме.Если я добавляю контейнер к любой другой пользовательской форме, он выполняется без проблем.

Private container As Object

'***************************************************************************
'Purpose: Create the container frame that holds the page title and preview image
'***************************************************************************
Private Sub createContainer()
    Set container = main.pageThumbnails.Controls.add("Forms.Frame.1", name) ' Break here, continuing causes *CRASH*

    With container
        .Caption = ""

        .height = containerHeight
        .width = containerWidth
        .Left = 12
        .top = areaHeight

        .BackColor = defaultBackColor
        .BorderColor = defaultBorderColor
    End With

    With main.pageThumbnails
        .ScrollHeight = areaHeight
    End With

End Sub

Проверка средства просмотра событий Windows дает мне следующее:

Faulting application name: EXCEL.EXE, version: 16.0.11029.20079, time stamp: 0x5bf4c8c3
Faulting module name: coml2.dll, version: 10.0.17134.407, time stamp: 0xaad4943a
Exception code: 0xc0000005
Fault offset: 0x0000000000016521
Faulting process id: 0x100788
Faulting application start time: 0x01d48cb0460efe6f
Faulting application path: C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE
Faulting module path: C:\WINDOWS\System32\coml2.dll
Report Id: 3ff6565e-7c37-4733-87fd-7e5ab12cba1f
Faulting package full name: 
Faulting package-relative application ID: 

То, что я пробовал:

  1. Работа в режиме совместимости (Windows 7 и 8)
  2. Перемещение файла из сетевого расположения в папку «Мои загрузки» на локальном компьютере
  3. Приведение container в видеMSForms.frame вместо Object
  4. Перезагрузка компьютера и Excel
  5. Запуск Excel в безопасном режиме: excel.exe /s
  6. Изменение container с Приватный до Public и ссылки Me.container
  7. Пробовал каждый (и каждый) метод, предоставленный Microsoft здесь
  8. Установил KB4011128 обновление от Microsoft. Он обнаружил проблему и «исправил ее», но проблема остается
  9. Redditors предложил , что удаление обновления 4018319 может решить проблему, но у меня его не установлено.
  10. Ссылка на форму main с использованием одноэлементного модуля вместо main.thumbnails
  11. Создание фрейма в коде main с кодом
  12. Ссылка на созданный фрейм изодноэлементный модуль
  13. Создан новый файл .xlsm, скопированный по всем классам, модулям и формам (кроме main).Создано main с нуля
  14. Добавлен недавно созданный CommandButton к кадру (это сработало ...)
  15. Изменен идентификатор thumbs кадра накуча случайных букв

1 Ответ

0 голосов
/ 06 декабря 2018

В процессе поиска я обнаруживал других людей с такими же журналами сбоев и ошибок в средстве просмотра событий Windows.Ни один из тех постов не использовал VBA, как я. Я решил проблему, удалив указанный элемент управления main.pageThumbnails и воссоздав его в редакторе.

В настоящее время я не знаю, что вызвало проблему, и не является ли это решение постоянным.


Обновление 30 января 2019

Продолжая бороться с этой проблемой и не придя к окончательному решению или даже объяснениям, почему это происходит, я создал обходной путь.

Вместо добавления объекта MSForms.Frame в контейнер я вместо этого добавил содержимое рамки (изображение и четыре метки) в контейнер и управлял их позиционированием с помощью метода Sub setTop.

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

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