Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

icq: 194381182
skype: viter.alex
По умолчанию

Я так понимаю, что Вы хотите запретить, чтобы пользователь возвращал пустую строку при выборе пути файла или директории.
Нужно обрабатывать событие 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,162
Репутация: 1127
По умолчанию

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

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

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

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

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

Я имею ввиду следующее:
Код:
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
Репутация: 13
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


12:30.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.