Страницы: 1
RSS
На помощь! Не могу закрыть UserForm с помощью команды Unload UserForm1
 
Здравствуйте, никак не получается закрыть UserForm3 использую следующий макрос  
 
Sub Rev_Level() 'Вызываю форму  
UserForm3.Show  
End Sub  
 
Private Sub CommandButton3_Click() 'Exit  
Unload UserForm3  
Exit Sub  
End Sub  
 
При нажатии на кнопку Cancel (CommandButton3) программа сворачивает форму. При очередном вызове формы кнопка уже не работает и программа зависает.  
 
При том что удивительно для первых двух форм UserForm1 и Userform2 все работает.  
 
Пример прикрепил, спасибо за помощь!
 
1. Зачем Exit Sub?  
2. Если кнопка принадлежит ЭТОЙ форме, то вместо Unload UserForm3 можно написать:  
Unload Me
 
c Unload Me таже история. Может кто-нибудь проверит мой файл, наверно я чего-то не понимаю.
 
Я бы проверил, но...
 
Мож, в правила и повнимательнее. Насчет версии.
Я сам - дурнее всякого примера! ...
 
как я уже говорил, Таблица из одного листа, на первом листе кнопка, по нажатию на которую я вызываю форму. Выходит форма первый раз ее можно закрыть. Прописал    
Private Sub CommandButton3_Click() 'Exit  
Unload Me  
End Sub  
При очередном вызове формы программа зависает. Единственное решение, после первого раза нажать в редакторе СТОП, тогда форма выгружется.
 
{quote}{login=Юрий М}{date=19.06.2010 06:34}{thema=}{post}1. Зачем Exit Sub?  
2. Если кнопка принадлежит ЭТОЙ форме, то вместо Unload UserForm3 можно написать:  
Unload Me{/post}{/quote}  
Можно еще  
End  
Убьет все объекты и переменные.
Я сам - дурнее всякого примера! ...
 
Прикрепил в версии 2003 <BR><STRONG>Файл удален</STRONG> - велик размер. [Модераторы]
 
{quote}{login=KuklP}{date=19.06.2010 06:50}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.06.2010 06:34}{thema=}{post}1. Зачем Exit Sub?  
2. Если кнопка принадлежит ЭТОЙ форме, то вместо Unload UserForm3 можно написать:  
Unload Me{/post}{/quote}  
Можно еще  
End  
Убьет все объекты и переменные.{/post}{/quote}  
 
Попробовал, ничего не меняется
 
ОТКЛЮЧИЛ  
'Private Sub RefEdit1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
'   If Range(RefEdit1.Value).Cells.Count > 1 Then  
'      RefEdit1.Value = ""  
'   End If  
'      TextBox1.Value = Cells(Range(Me.RefEdit1).Row, 5).Value  
'End Sub  
'  
РАБОТАЕТ - ГДЕ-ТО ОШИБКА
 
{quote}{login=}{date=19.06.2010 06:59}{thema=}{post}ОТКЛЮЧИЛ  
'Private Sub RefEdit1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
'   If Range(RefEdit1.Value).Cells.Count > 1 Then  
'      RefEdit1.Value = ""  
'   End If  
'      TextBox1.Value = Cells(Range(Me.RefEdit1).Row, 5).Value  
'End Sub  
'  
РАБОТАЕТ - ГДЕ-ТО ОШИБКА{/post}{/quote}  
 
Спасибо что нашли ошибку. Но с помощью этой команды я ограничиваю выбор только одной ячейки RefEdit1. При том если RefEdit1 содержит значение, то форма закрывается без ошибки. Как быть если ничего не выбрано и нажать Cancel?
 
Может в проверке добавить  
Else  
Cancel=True  
Exit sub
 
Я тоже понял,что в RefEdit1 загвоздка. Пока болтал с крестницей по телевону - опередили.
Я сам - дурнее всякого примера! ...
 
{quote}{login=Юрий М}{date=19.06.2010 07:12}{thema=}{post}Может в проверке добавить  
Else  
Cancel=True  
Exit sub{/post}{/quote}  
 
Попробовал  
Private Sub CommandButton3_Click() 'Exit  
Unload me  
Else  
Cancel=True  
End Sub  
 
Не рабоате. Или я не правильно понял...
 
Файл перевел в 2003
 
{quote}{login=Юрий М}{date=19.06.2010 07:12}{thema=}{post}Может в проверке добавить  
Else  
Cancel=True  
Exit sub{/post}{/quote}  
Не поможет, пробовал. Там надо рыться в свойствах RefEdit1. Вообще, я так понял это контрол сторонних разработчиков?
Я сам - дурнее всякого примера! ...
 
Неправильно - в проверку в If Range(RefEdit1...
 
{quote}{login=Юрий М}{date=19.06.2010 07:19}{thema=}{post}Неправильно - в проверку в If Range(RefEdit1...{/post}{/quote}  
 
Сделал так, не помогло  
 
Private Sub RefEdit1_Exit(ByVal Cancel As MSForms.ReturnBoolean)  
  If Range(RefEdit1.Value).Cells.Count > 1 Then  
     RefEdit1.Value = ""  
     Else  
     Cancel = True  
  End If  
     TextBox1.Value = Cells(Range(Me.RefEdit1).Row, 5).Value  
End Sub
 
А я и проверить не могу - Excel вылетает
 
{quote}{login=Юрий М}{date=19.06.2010 07:24}{thema=}{post}А я и проверить не могу - Excel вылетает{/post}{/quote}  
У меня тоже.:-( Точно, сторонние разработчики. Или локализация глючит.
Я сам - дурнее всякого примера! ...
 
Какой-то полтергейст. Работу в понедельник надо показывать а тут такое. Что удивительно, две аналогичные формы у меня работают, эта нет, проверил все одинаково. Help
 
{quote}{login=KuklP}{date=19.06.2010 07:27}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.06.2010 07:24}{thema=}{post}А я и проверить не могу - Excel вылетает{/post}{/quote}  
У меня тоже.:-( Точно, сторонние разработчики. Или локализация глючит.{/post}{/quote}  
 
Кто такие Сторонние разработчики? Это делал я из найденного в интернете. Может попробовать в другом формате сохранить?
 
Как вариант: заводим глобальную переменную, в модуле листа на событие Worksheet_SelectionChange определяем её значение в зависимости от к-ва выделенных ячеек, и используем эту переменную далее.
 
{quote}{login=Denis.ch}{date=19.06.2010 07:30}{thema=Re: Re: }{post}{quote}{login=KuklP}{date=19.06.2010 07:27}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.06.2010 07:24}{thema=}{post}{/post}{/quote}{/post}{/quote}Кто такие Сторонние разработчики? Это делал я {/post}{/quote}  
:-)
 
{quote}{login=Юрий М}{date=19.06.2010 07:33}{thema=Re: Re: Re: }{post}{quote}{login=Denis.ch}{date=19.06.2010 07:30}{thema=Re: Re: }{post}{quote}{login=KuklP}{date=19.06.2010 07:27}{thema=Re: }{post}{quote}{login=Юрий М}{date=19.06.2010 07:24}{thema=}{post}{/post}{/quote}{/post}{/quote}Кто такие Сторонние разработчики? Это делал я {/post}{/quote}  
:-){/post}{/quote}  
Да не смейтесь, я в Excel ламер, то что я делаю это вынужденная необходимость.
 
Да нет, RefEdit, вроде родной.
Я сам - дурнее всякого примера! ...
 
А если перенести код проверки из Exit в Change?
 
{quote}{login=The_Prist}{date=19.06.2010 07:29}{thema=}{post}Я бы на Вашем месте проверял кол-во ячеек в диапазоне RefEdit в процессе обработки, а не при событии Exit. Если ячеек больше одной - выдаете сообщение о недопустимости выделения больше 1 и Exit Sub. Пусть выделяют как надо.{/post}{/quote}  
 
Спасибо за хорошую идею!  
Как быть с этим    
TextBox1.Value = Cells(Range(Me.RefEdit1).Row, 5).Value  
Необходимо во время ввода установить в TextBox1  значение RefEdit1
 
{quote}{login=Юрий М}{date=19.06.2010 07:42}{thema=}{post}А если перенести код проверки из Exit в Change?{/post}{/quote}  
Только попробовал, так работает.
Я сам - дурнее всякого примера! ...
 
Получилось вот так:  
 
Private Sub CommandButton3_Click() 'Exit  
Unload Me  
End Sub  
 
Private Sub RefEdit1_Сhange()  
     TextBox1.Value = Cells(Range(Me.RefEdit1).Row, 5).Value  
End Sub  
 
Вроде бы работает, тьфу-тьфу-тьфу. Спасибо всем за помощь!
Страницы: 1
Читают тему
Наверх