Ошибка выполнения VBA Excel VBA -2147319767 (80028029)

Привет всем, у меня есть довольно странная проблема с кодом VBA. Я использую макросы для добавления / удаления пользовательских элементов управления программным способом. Когда я просто добавляю элемент управления пользовательской формой и после этого пытаюсь его удалить, все работает нормально. Но как только я пытаюсь удалить элементы управления пользовательской формы, которые я только что создал и использовал (как и userform.Show), я получил названную ошибку. После попытки снова это работает … так что первый вопрос будет похожим, что, черт возьми, это? И второй вопрос заключается в том, как я могу решить эту проблему или мне даже нужно ее решить? Могу ли я просто запустить эту ошибку с помощью какой-либо обработки ошибок?

Я не уверен, какая часть моего кода помогает понять мою проблему, но я предполагаю, что код для удаления элементов управления пользовательской формой может помочь:

Public Function delete_userform_controls(strUserForm As String) Dim VBProj As VBIDE.VBProject Dim VBComp As VBIDE.VBComponent Dim iCount As Integer Dim cnt As Control Dim iMaxColumns As Integer Dim lCountOfLines As Long Set VBProj = ActiveWorkbook.VBProject Set VBComp = VBProj.VBComponents(strUserForm) For Each cnt In VBComp.Designer.Controls If TypeName(cnt) = "Label" Then iMaxColumns = iMaxColumns + 1 Next cnt With VBComp.Designer For iCount = 0 To iMaxColumns - 1 .Controls.Remove ("label_" & iCount & "") .Controls.Remove ("textbox_" & iCount & "") Next .Controls.Remove ("ok_button") .Controls.Remove ("cancel_button") End With With VBComp.CodeModule .DeleteLines 1, .CountOfLines End With End Function 

И, кроме того, если я не пользуюсь никакими пользовательскими функциями, я могу добавлять и удалять элементы управления столько, сколько хочу, никаких ошибок … thx!

Я подозреваю, что вы добавляете элементы управления во время разработки, но после загрузки пользовательской формы вы пытаетесь удалить элементы управления во время выполнения, что запрещено. Когда вы видите ошибку в первый раз и выбираете [End], вы сбрасываете среду VBA, которая выгружает UserForm. (Другие вещи также происходят: все глобальные переменные теряют свои значения.) В этот момент пользовательская форма больше не загружается, поэтому вы можете удалять элементы управления.

Если это ваша ситуация, вам нужно убедиться, что пользовательская форма загружена перед добавлением элементов управления. Когда вы делаете userform.Show в первый раз, происходят две вещи: форма загружается, а затем становится видимой. Вы можете загрузить его, не делая его видимым с помощью метода .Load. Затем вы можете добавить свои элементы управления. Пока вы не выгружаете форму с помощью метода .Unload (или сброса VBA), ваши элементы управления будут сохраняться. .Hide и .Show изменит видимость формы, но не приведет к тому, что элементы управления, добавленные во время выполнения, будут отброшены.

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

  • Ошибка 424 «Требуемый объект» при попытке вычислить количество используемых строк
  • Как прокрутить флажки на динамически созданной пользовательской форме?
  • Ошибка в Userform.Hide внутри Workbook_Deactivate event
  • как vlookup элемент в столбце D и получить значение столбца a в пользовательской форме vba?
  • Медленная запись ввода в пользовательскую форму
  • VBA - Как я могу дать код ошибки на основе суммы моих значений текстового поля в форме пользователя?
  • Использование операторов IF & AND с флажками в пользовательской форме
  • UserForm ComboBox
  • Пользовательская форма и несколько изображений
  • VBA Excel 2013: назначение значений массива из другой пользовательской формы
  • Динамическое название диаграммы из пользовательской формы
  • Interesting Posts

    Использование кода VBA для копирования определенного значения из ячейки, когда раскрывающийся список изменяет это значение

    Excel VBA Получить значение ячейки в строке, даже если ячейка N / A, REF и другие

    Сортировка по текстовому значению в VBA

    Excel – взять продукт из ряда ячеек, вычитаемых из 1

    Excel vba: почему обновление не обновляется, обновляйте ячейки непосредственно перед отключением обновления экрана

    для отображения Excel после сохранения

    Как позиционировать элемент (диаграмму) в Excel в определенной ячейке?

    Не удалось найти сборку Entity Framework v 4.4.0.0

    Перемещение символа из ячейки в новую ячейку на основе пронумерованного контура

    Подсчитывать непустые текстовые ячейки в столбце

    VBA ADO Recordset GetRows полиморфное поведение

    Ошибка цикла при импорте из Excel в MS Project

    Экспорт Kendo-UI Excel с содержимым заголовка и нижнего колонтитула

    C # с использованием NPOI для редактирования значений ячейки excel (.xls) не работает

    Чтение данных из файла excel каждые 500 миллисекунд в c #

    Давайте будем гением компьютера.