Ошибка выполнения 1004 для пользовательской формы, которая все еще существует - PullRequest
0 голосов
/ 16 мая 2019

Чтобы упростить использование электронной таблицы и избежать того, чтобы кто-либо просто добавлял или удалял строки по своему усмотрению (и, следовательно, испортил формулы), я использовал ряд пользовательских форм. Первая пользовательская форма дает пользователю возможность «Отмена», «Удалить строку» или «Вставить строку». Выбор «Отмена» выгружает форму, а выбор «Удалить строку» выгружает исходную форму и показывает другую пользовательскую форму - это позволяет пользователю выбрать номер строки, которую он хочет удалить, а нажатие OK удаляет ее. Это все отлично работает.

У меня проблема с кнопкой «Вставить строку» - это должно выгрузить первую пользовательскую форму и показать другую пользовательскую форму. Эта новая пользовательская форма «Вставить строку» позволяет пользователю вводить номер строки, после которого необходимо вставить новую строку. У пользователя есть возможность ввести дополнительную информацию в различные текстовые поля и комбинированные списки, которые будут заполнять новую пустую строку - они включают даты начала и окончания.

У меня были проблемы с целочисленными и строковыми значениями с возможностью ручного ввода дат, поэтому я решил использовать еще 2 пользовательские формы, открытые с начальной и конечной дат, которые дали календарь (выберите нужную дату, нажмите ОК и дата вставляется в соответствующее текстовое поле в пользовательской форме «Вставить строку»). Я проверил их полностью, чтобы сгладить морщины, и все, казалось, работало.

Затем я открыл первую пользовательскую форму из командной кнопки на электронной таблице,
Выберите «Отмена» и «Удалить строку», чтобы убедиться, что они все еще работают, затем выберите «Вставить строку» и получите «Ошибка времени выполнения» 1004 «Ошибка приложения или объекта». Когда я пошел на отладку, он выделяет строку: userform1.show

Единственное, о чем я могу думать, это может быть проблема (и единственное существенное изменение, которое я сделал), это два календаря, которые ссылаются на userform1. Я провел несколько поисков, но не нашел ничего похожего на мою проблему - я просто не знаю, каковы проблемы с наличием многослойных пользовательских форм. Я включил часть кода в качестве дальнейшего объяснения:

Private Sub InsertRowButton_Click()

  'unload the first userform when the user selects "Insert Row"

  Unload ModifyProjectUserForm1

  ''This line highlights as the problem

  UserForm1.Show

End Sub

'''the following subs are embedded in "UserForm1" (the one to Insert Row), allowing the user to select a date:

Private Sub InsertRowNumberStartDateCommandButton_Click()

  frmCalendar1.Show

End Sub

Private Sub InsertRowNumberEndDateCommandButton_Click()

  frmCalendar2.Show

End Sub

'''The following are the subs used to take the dates and place them in "UserForm1":

Private Sub StartDateCalendarOK_Click()

  On Error Resume Next

  UserForm1.InsertRowNumberStartDateTextBox.Value = frmCalendar1.Calendar1.Value

  Unload frmCalendar1

End Sub

Private Sub EndDateCalendarOK_Click()

  On Error Resume Next

  UserForm1.InsertRowNumberEndDateTextBox.Value = frmCalendar2.Calendar2.Value

  Unload frmCalendar2

End Sub

Я ожидал, что откроется пользовательская форма «Вставить строку», что позволит мне добавить новую строку со связанными данными и датами. То, что я получил, было ошибкой во время выполнения, и я в полной растерянности.

Я не знаю, пойду ли я по неправильному маршруту, но мне не хочется публиковать весь мой код, потому что его много!

Может кто-нибудь помочь?

...