Не удается закрыть пользовательскую форму

Позвольте мне настроить среду.

Это код VBA, запущенный в Excel.

У меня есть пользовательская форма, содержащая msflexgrid. Этот flexgrid показывает список клиентов и клиентов, продавцов, csr, mfg rep и территорий, присвоений. Когда вы нажимаете в столбце, скажем, в столбце Territory, открывается другая пользовательская форма, чтобы отобразить список территорий. Затем вы выбираете территорию по вашему выбору, пользовательская форма исчезает, а новая территория занимает место старой территории.

Все это отлично работает, пока вы не нажмете на выбранную вами территорию. Пользовательская форма «Территория» не исчезнет (она мерцает), и новая территория не передает базовую пользовательскую форму.

Я должен упомянуть, что когда я перехожу через код, он отлично работает.

Я предполагаю, что с чем-то это связано с flexgrid, так как все остальные пользовательские формы (у которых нет flexgrids), которые отлично открывают пользовательскую форму.

Ниже приведен пример кода:

** Нажмите событие из flexgrid, которое показывает форму пользователя Territory и присвоение новой территории при закрытии пользовательской формы территории.

Private Sub FlexGrid_Customers_Click() With FlexGrid_Customers Select Case .Col Case 0 Case 2 Case 4 Case 6 UserForm_Territories.Show Case Else End Select If Len(Trim(Misc1)) > 0 Then .TextMatrix(.Row, .Col) = Trim(Misc1) .TextMatrix(.Row, .Col + 1) = Trim(Misc2) End If End With End Sub 

** В пользовательской форме Territory используются следующие Subs

 Private Sub UserForm_Activate() Misc1 = "" Misc2 = "" ListBox_Territory.Clear Module_Get.Territories End Sub Private Sub UserForm_Terminate() Set UserForm_Territories = Nothing End Sub Private Sub ListBox_Territory_Click() With ListBox_Territory Misc1 = Trim(.List(.ListIndex, 0)) Misc2 = Trim(.List(.ListIndex, 1)) End With Hide UserForm_Terminate End Sub 

Я знаю это долгое объяснение, но я довольно приличный программист VBA, и это меня озадачило.

Любая помощь будет принята с благодарностью.

Я не собираюсь говорить, что вы делаете неправильно (в том, что он никогда не будет работать), но это пугает меня. Это не так, как я имел дело с формами.

Во-первых, вы используете UserForm_Territories (имя класса / формы) для ссылки на неявно созданный экземпляр формы. Это то, чего я всегда избегал делать. Я всегда создавал экземпляр формы явно, поэтому вместо:

 UserForm_Territories.Show 

Я бы сделал:

 Dim oTerritoriesForm As UserForm_Territories Set oTerritoriesForm = New UserForm_Territories oTerritoriesForm.Show vbModal ' get the values from the form here Unload oTerritoriesForm 

Далее, и гораздо более тревожно, вы подрываете поведение UserForm_Terminate, вызывая его явно. Почему вы делаете это, я не могу себе представить, если вы не подумали, что это будет работать вокруг вашей заявленной проблемы. Мой совет: не делай этого.

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

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

  • Excel VBA UserForm - если не IsEmpty Then
  • Изменение столбцов для comboboxes пользовательской формы Excel
  • XL VBA Как запретить игнорировать свойства UserTorm и .Left при первом .Show?
  • excel vba userforms: пользовательский тип не определен
  • Ошибка 424 «Требуемый объект» при попытке вычислить количество используемых строк
  • Может ли формула ячейки Excel ссылаться на элемент управления UserForm?
  • EXCEL VBA: код пользовательской формы, улучшение повторяющихся кодов
  • VBA - Как я могу дать код ошибки на основе суммы моих значений текстового поля в форме пользователя?
  • Автоматическое заполнение столбцов последовательных номеров A в соответствии с количеством строк столбца B
  • Автоматическое открытие нескольких пользовательских форм
  • Отсутствует свойство Excel VBA «AxisBetweenCategories» в ChartSpace
  • Interesting Posts

    Excel импортирует данные из служб Analysis Services – дата встречается как текст

    Ошибка при изменении файла с жесткой кодировкой в ​​запрошенный пользователем файл

    Excel Извлечение чисел из текстовой строки и их суммы

    Найти и выделить дубликаты

    Как импортировать CSV. Сначала импортируйте x количество строк в один лист, а затем x числа в следующем ect

    Excel Pivot Table Filters – Как сделать один фильтр выпадающим в зависимости от другого падения?

    Поиск дат и вычислений в массиве Excel

    Форматирование текстового «00:00 + Week Day + Date» в качестве даты-времени

    Запуск макроса, когда связанное значение изменения ячейки (Excel VBA)

    Функции, введенные VBA, дают #Name error

    Проверка специальных символов в excel с помощью vba

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

    Excel – форматирует уникальные столбцы в excel, включая пробелы

    Как определить, сколько столбцов / строк имеет таблица, скопированная из другого приложения?

    Объект диапазона – почему я не использую лист иногда

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