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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2009, 13:38   #1
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию Деактивировать "Крестик" в GetOpenFile

Уважаемые Товарищи знатоки Excel и VBA!!!
Как сделать, чтобы при открытии окна "Указать путь к файлу" и "Выбрать директорию" (не знаю как они правильно называются, поэтому прилагаю файл) нельзя было их закрыть через крестик и кнопку отмена... Либо, что лучше, при нажатии на крестик или кнопку отмена появлялась первая стартовая форма UserForm8 (а не UserForm4 или 5).
Если можно, то хотелось бы посмотреть два варианта.
Спасибо!
Вложения
Тип файла: rar Открыть.rar (71.5 Кб, 12 просмотров)
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Старый 25.04.2009, 15:00   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Я так понимаю, что Вы хотите запретить, чтобы пользователь возвращал пустую строку при выборе пути файла или директории.
Нужно обрабатывать событие QueryClose (Запрос на закрытие) для форм UserForm4 и UserForm5
Что-то я не смог сходу придумать, как закрыть эти формы и показать стартовую, но отключить можно так:
Код:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
  Cancel = CInt(Len(TextBoxDir.Value) = 0)
End Sub
Если в поле TextBoxDir для формы UserForm4 не будет ничего введено, то форма не закроется.

Добавлено позже
Вспомнил! Есть у формы событие UserForm_Terminate, в которое как раз и нужно прописать показ основной формы UserForm8. Возникает это событие при выгрузке формы из оперативной памяти, т.е. уже после закрытия.
Код:
Private Sub UserForm_Terminate()
  UserForm8.Show
End Sub
Думаю, что такое решение подойдет. Можно, конечно, и крестик у окна дезактивировать, но это такой головняк через WinAPI
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 25.04.2009 в 15:21.
viter.alex вне форума Ответить с цитированием
Старый 27.04.2009, 05:44   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите пример во вложении.
Вложения
Тип файла: rar Открыть_2.rar (13.6 Кб, 26 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.04.2009, 10:27   #4
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Посмотрите пример во вложении.
Это я так понял убирается крестик из формы, а если без формы просто:

Sub Директория()
Application.GetOpenFilename
End Sub

Чтобы в это окно нельзя было закрыть, либо чтобы пустое значение в строке выбора файла не было...
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Старый 29.04.2009, 10:42   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Application.GetOpenFilename вызывает модальное окно, поэтому все дальнейшие команды блокируются. Крестик не убрать. Но после закрытия этого окна, можно контролировать выбранный файл, и если он "False" или "пустой", то возвращаться на Application.GetOpenFilename.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 29.04.2009, 10:52   #6
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я имею ввиду следующее:
Код:
Sub Директория()
M1: FName = Application.GetOpenFilename
    If FName = "False" Then GoTo M1
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 30.04.2009, 11:20   #7
Klim Bassenger
Форумчанин
 
Аватар для Klim Bassenger
 
Регистрация: 20.01.2009
Сообщений: 138
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Я имею ввиду следующее:
Код:
Sub Директория()
M1: FName = Application.GetOpenFilename
    If FName = "False" Then GoTo M1
End Sub
То что нужно! Спасибо!!!
Чтобы правильно задать вопрос, надо знать большую часть ответа.
Klim Bassenger вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body tabikA HTML и CSS 5 24.02.2009 21:50
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49