Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2012, 16:15   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию закрытие формы - в чем ошибка?

привет всем))
подскажите пожалуйста, есть код, но почему-то на закрытие формы выдает ошибку "Run-time error 1004: Введено недопустимое имя" и отсылка идет на саб, который должен выполняться, если форма все еще открыта. в чем может быть дело??
Код:
Sub FinishVvod()
            k = 0
            Do
                If MsgBox("Новый респондент?", vbYesNo) = vbNo Then
                    If MsgBox("Завершить ввод данных?", vbYesNo) = vbYes Then
                        Unload Me
                        ActiveWorkbook.Save 'сохранение книги
                        Exit Sub
                    Else: k = 1
                    End If
                Else
                    k = 0
                    Colm_ = 1
                    Roww_ = Roww_ + 1
                    id_ = id_ + 1
                    Cells(Roww_, 1).Value = id_
                    Exit Do
                End If
            Loop While k = 1
End Sub

Последний раз редактировалось Bape}l{ka; 02.04.2012 в 16:20.
Bape}l{ka вне форума Ответить с цитированием
Старый 02.04.2012, 16:30   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Код:
Unload Me
ActiveWorkbook.Save 'сохранение книги
Переставьте эти строки местами

Или вместо Unload Me
напишите Me.Hide
EducatedFool вне форума Ответить с цитированием
Старый 02.04.2012, 16:49   #3
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

ты же катавасия..
почему-то продолжают выполняться действия для этой формы (другой саб этой формы), как-будто она не закрылась О.о ничего не понимаю
Bape}l{ka вне форума Ответить с цитированием
Старый 02.04.2012, 16:51   #4
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

в итоге просто в другом сабе поставила проверку, но все-же не понятно, с какой стати он перескакивает отсюда туда при том, что тут есть команда "Exit Sub"
Bape}l{ka вне форума Ответить с цитированием
Старый 02.04.2012, 17:30   #5
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Bape}l{ka,
1. Откуда вызывается данная процедура?
2. Почему не объявлены переменные? Неужели они все приватные/публичные?
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 03.04.2012, 04:00   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Если выполняемая процедура находится в программном модуле, то ключевое слово "Me" относится не к открытой форме. Поэтому, к форме, которую требуется закрыть, нужно обращаться по имени. Например:
Код:
Unload UserForm1
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.04.2012, 09:37   #7
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

nerv
спасибо, подсказали))
я ж этот саб вызываю из другой процедуры, соответственно он выходит из этого и возвращается обратно.
а подскажите, есть ли такая команда, которая прекращала бы выполнение макроса вообще?? без возвращений к предыдущим процедурам =ь

п.с.: наверно проще объединить сабы
п.п.с.: да, тут все переменные публичные - это плохо?
Bape}l{ka вне форума Ответить с цитированием
Старый 03.04.2012, 11:32   #8
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

Цитата:
Сообщение от Bape}l{ka Посмотреть сообщение
п.п.с.: да, тут все переменные публичные - это плохо?
Мое мнение - чем меньше публичных переменных, тем лучше.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 03.04.2012, 12:41   #9
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
есть ли такая команда, которая прекращала бы выполнение макроса вообще?? без возвращений к предыдущим процедурам
Если из одной процедуры вызывать другую, то после выполнения команды "Exit Sub" будет осуществлен переход к следующей команде того макроса (процедуры), из которого мы вызывали данный. Поэтому, для того, чтобы завершить выполнение каких-либо дальнейших действий, Вы должны остановить их в вызывающей процедуре. Либо безусловно, либо по условию. Это зависит от того, что конкретно требуется.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.04.2012, 13:23   #10
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

SAS888, спасибо, я поняла, в итоге сделала FinishVvod не сабом а функцией Boolean, и уже в главной процедуре осуществляю выход)))

nerv, я думала, что может существуют какие-то объективные причины... а так, мне гораздо удобнее с публичными переменными) конечно, специфические я объявляю. а постоянно используемые так и висят))
Bape}l{ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие формы annaangel Общие вопросы Delphi 2 09.10.2009 13:26
Закрытие формы.... sergiksergik Microsoft Office Excel 18 22.09.2009 20:23
Закрытие формы RIO Общие вопросы Delphi 2 27.08.2009 17:10
Закрытие формы girz БД в Delphi 7 13.05.2009 22:54