Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/При закрытии формы командой Unload - вылезает ошибочка - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При закрытии формы командой Unload - вылезает ошибочка (Макросы/Sub)
При закрытии формы командой Unload - вылезает ошибочка
lopuxi Дата: Понедельник, 30.11.2020, 18:14 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Мне нужен шаман, бубны и танцы. Надеюсь на вашу помощь! )

Столкнулся со странным поведением формы при попытке ее закрыть командой Unload
Ошибка возникает стандартная и заезженная... типизации данных (Variable not defined)
При этом все переменные заданы. В прочем они не менялись с момента когда все работало. А в неизвестный для меня временной момент все сломалось.

Что интересно. Сама форма работает, все функции выполняет, но когда я ее закрываю командой Unload все летит в трантарары...

Удалял код кусками, пытаясь выяснить из-за чего возникает ошибка, это не дало результата. В следствии чего решил удалить все что можно удалить и оставил только книгу с двумя листами и конечно же сому форму. Она находится на втором листе, активируется двойным кликом по ячейкам в теле таблицы в 1 колонке и 4-5 колонках.

А далее я в ней поставил ЖИРНУЮ кнопку, которая выполняет команду Unload.

p,s,
Памагите, спасите.


О_о ...и так можно было?

Сообщение отредактировал lopuxi - Понедельник, 30.11.2020, 18:45
 
Ответить
СообщениеМне нужен шаман, бубны и танцы. Надеюсь на вашу помощь! )

Столкнулся со странным поведением формы при попытке ее закрыть командой Unload
Ошибка возникает стандартная и заезженная... типизации данных (Variable not defined)
При этом все переменные заданы. В прочем они не менялись с момента когда все работало. А в неизвестный для меня временной момент все сломалось.

Что интересно. Сама форма работает, все функции выполняет, но когда я ее закрываю командой Unload все летит в трантарары...

Удалял код кусками, пытаясь выяснить из-за чего возникает ошибка, это не дало результата. В следствии чего решил удалить все что можно удалить и оставил только книгу с двумя листами и конечно же сому форму. Она находится на втором листе, активируется двойным кликом по ячейкам в теле таблицы в 1 колонке и 4-5 колонках.

А далее я в ней поставил ЖИРНУЮ кнопку, которая выполняет команду Unload.

p,s,
Памагите, спасите.

Автор - lopuxi
Дата добавления - 30.11.2020 в 18:14
CaramelManiac Дата: Понедельник, 30.11.2020, 18:35 | Сообщение № 2
Группа: Пользователи
Ранг: Участник
Сообщений: 64
Репутация: 22 ±
Замечаний: 0% ±

MS Excel 2003-2019
Здравствуйте.
Это имя вашей формы - Add_media_account
А это Вы закрываете - Add_media_accoun


Сообщение отредактировал CaramelManiac - Понедельник, 30.11.2020, 18:36
 
Ответить
СообщениеЗдравствуйте.
Это имя вашей формы - Add_media_account
А это Вы закрываете - Add_media_accoun

Автор - CaramelManiac
Дата добавления - 30.11.2020 в 18:35
Pelena Дата: Понедельник, 30.11.2020, 18:36 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Название формы в команде Unload неправильно написано. Буковку t где-то потеряли


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеНазвание формы в команде Unload неправильно написано. Буковку t где-то потеряли

Автор - Pelena
Дата добавления - 30.11.2020 в 18:36
lopuxi Дата: Понедельник, 30.11.2020, 18:40 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Серьёзно? Какой стыд.


О_о ...и так можно было?
 
Ответить
СообщениеСерьёзно? Какой стыд.

Автор - lopuxi
Дата добавления - 30.11.2020 в 18:40
lopuxi Дата: Понедельник, 30.11.2020, 19:16 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Не ребят. Не понимаю, все же это я видимо когда ковырялся случайно t удалил и ошибка обрела такой формат как Variable not defined.
Однако сейчас ошибка сохраняется и имеет имя object variable or With block variable not set.

Кидаю всю партянку что писал.

Какая то хрень с переменными. Но место для мистики тут сохраняется.
Изначально ошибка была замечена когда переходил на другой лист с Account (аккаунты), на Client_Card (карточка клиента). Срабатывала она только когда форма не активна, не включена и происходит переход на другой лист.
Сейчас ошибки возникает, когда я переключаюсь с листа Account (аккаунты) на Itog_svod_list (Итоговая сводная). При этом ошибки нет, когда форма открыта и она есть когда форма не активна и не была включена.
В этот момент единственная операция которая срабатывает на листе Account (аккаунты), это:

[vba]
Код

' Закрыть форму при смене листа!
Private Sub Worksheet_Deactivate()
    Unload Add_media_account
End Sub
[/vba]

А уже не знаю что это и почему. Может у меня с компом что не так. Перезапуск Excel в общем то не помогает. Комп не перезагружал.
К сообщению приложен файл: ___V10.xlsm (328.8 Kb)


О_о ...и так можно было?
 
Ответить
СообщениеНе ребят. Не понимаю, все же это я видимо когда ковырялся случайно t удалил и ошибка обрела такой формат как Variable not defined.
Однако сейчас ошибка сохраняется и имеет имя object variable or With block variable not set.

Кидаю всю партянку что писал.

Какая то хрень с переменными. Но место для мистики тут сохраняется.
Изначально ошибка была замечена когда переходил на другой лист с Account (аккаунты), на Client_Card (карточка клиента). Срабатывала она только когда форма не активна, не включена и происходит переход на другой лист.
Сейчас ошибки возникает, когда я переключаюсь с листа Account (аккаунты) на Itog_svod_list (Итоговая сводная). При этом ошибки нет, когда форма открыта и она есть когда форма не активна и не была включена.
В этот момент единственная операция которая срабатывает на листе Account (аккаунты), это:

[vba]
Код

' Закрыть форму при смене листа!
Private Sub Worksheet_Deactivate()
    Unload Add_media_account
End Sub
[/vba]

А уже не знаю что это и почему. Может у меня с компом что не так. Перезапуск Excel в общем то не помогает. Комп не перезагружал.

Автор - lopuxi
Дата добавления - 30.11.2020 в 19:16
Pelena Дата: Понедельник, 30.11.2020, 19:20 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Видимо, при деактивации листа Вы пытаетесь закрыть закрытую форму.

Хотя нет, у меня ошибок не возникает в любом случае

При переходе на другой лист ошибка возникает в этой строке
[vba]
Код
TextBox_NDS = Cells(Selection.Cells(1).Row, 3).Value * 100
[/vba]так как Cells относится к активному листу и там необязательно число, а Вы умножаете на 100


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеВидимо, при деактивации листа Вы пытаетесь закрыть закрытую форму.

Хотя нет, у меня ошибок не возникает в любом случае

При переходе на другой лист ошибка возникает в этой строке
[vba]
Код
TextBox_NDS = Cells(Selection.Cells(1).Row, 3).Value * 100
[/vba]так как Cells относится к активному листу и там необязательно число, а Вы умножаете на 100

Автор - Pelena
Дата добавления - 30.11.2020 в 19:20
lopuxi Дата: Понедельник, 30.11.2020, 19:58 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
так как Cells относится к активному листу и там необязательно число, а Вы умножаете на 100


Верно. Вот оно что.
Сделал проверку на число и все заработало.

[vba]
Код

If IsNumeric(Cells(Selection.Cells(1).Row, 3).Value) Then: TextBox_NDS = Cells(Selection.Cells(1).Row, 3).Value * 100
[/vba]

Большой поклон тебе добрый человек!!! booze


О_о ...и так можно было?
 
Ответить
Сообщение
так как Cells относится к активному листу и там необязательно число, а Вы умножаете на 100


Верно. Вот оно что.
Сделал проверку на число и все заработало.

[vba]
Код

If IsNumeric(Cells(Selection.Cells(1).Row, 3).Value) Then: TextBox_NDS = Cells(Selection.Cells(1).Row, 3).Value * 100
[/vba]

Большой поклон тебе добрый человек!!! booze

Автор - lopuxi
Дата добавления - 30.11.2020 в 19:58
RAN Дата: Понедельник, 30.11.2020, 20:01 | Сообщение № 8
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Лен, немного расшифрую
1. При переходе на лист ИТОГОВАЯ СВОДНАЯ он становится активным
2. Для того, чтобы форму выгрузить, ее нужно загрузить (инициализировать), т.е. запускается UserForm_Initialize соответствуюшей формы
3. Все Cells и Selection в процедуре UserForm_Initialize относятся к активному листу, а структура этого листа явно не подходит для загрузки этой формы
и напоследок 4 - по случаю ошибки загрузки формы возникает ошибка в первоначальном макросе, о чем вас и информируют

Перенесите код в процедуру активации формы
[vba]
Код
Private Sub UserForm_Activate()
[/vba]
и будет вам щастье.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЛен, немного расшифрую
1. При переходе на лист ИТОГОВАЯ СВОДНАЯ он становится активным
2. Для того, чтобы форму выгрузить, ее нужно загрузить (инициализировать), т.е. запускается UserForm_Initialize соответствуюшей формы
3. Все Cells и Selection в процедуре UserForm_Initialize относятся к активному листу, а структура этого листа явно не подходит для загрузки этой формы
и напоследок 4 - по случаю ошибки загрузки формы возникает ошибка в первоначальном макросе, о чем вас и информируют

Перенесите код в процедуру активации формы
[vba]
Код
Private Sub UserForm_Activate()
[/vba]
и будет вам щастье.

Автор - RAN
Дата добавления - 30.11.2020 в 20:01
Pelena Дата: Понедельник, 30.11.2020, 20:01 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 19162
Репутация: 4412 ±
Замечаний: ±

Excel 365 & Mac Excel
Сделал проверку на число и все заработало

Думаю, здесь правильнее было бы обратиться к конкретному листу, где в ячейке находится НДС


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Сделал проверку на число и все заработало

Думаю, здесь правильнее было бы обратиться к конкретному листу, где в ячейке находится НДС

Автор - Pelena
Дата добавления - 30.11.2020 в 20:01
lopuxi Дата: Понедельник, 30.11.2020, 20:18 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 142
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007, 2013
Думаю, здесь правильнее было бы обратиться к конкретному листу, где в ячейке находится НДС


А там думаю так не получится. Он берет значение исходя из выделенной Select-ом ячейки. А оно может быть на разных строках у меня, в зависимости куда ткнул, в какую ячейку, такое значение и будет найдено в этих координатах, и выведено на форме.
Проверка на число должна уводить от ошибки, форма хоть и проходит инициализацию, но она все равно выполняется процедуру закрытия, при смене листа, а значит это уже не так важно :)


О_о ...и так можно было?
 
Ответить
Сообщение
Думаю, здесь правильнее было бы обратиться к конкретному листу, где в ячейке находится НДС


А там думаю так не получится. Он берет значение исходя из выделенной Select-ом ячейки. А оно может быть на разных строках у меня, в зависимости куда ткнул, в какую ячейку, такое значение и будет найдено в этих координатах, и выведено на форме.
Проверка на число должна уводить от ошибки, форма хоть и проходит инициализацию, но она все равно выполняется процедуру закрытия, при смене листа, а значит это уже не так важно :)

Автор - lopuxi
Дата добавления - 30.11.2020 в 20:18
Мир MS Excel » Вопросы и решения » Вопросы по VBA » При закрытии формы командой Unload - вылезает ошибочка (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!