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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2009, 07:16   #1
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию как из макроса передать управление пользователю, а потом опять макросу?

Как в цикле, в случае выполнения условия, сделать так, чтобы управление передалось пользователю до нажатия определенной кнопки?
То есть. У меня есть макрос, который проходит по каждому листу рабочей книги. Одним из входных параметров для этого макроса служит Selection.Rows.Count... Но иногда могут попасться такие листы, в которых трудно автоматически выделить этот самый Selection. В этом случае, хочется, чтобы происходило следующее: всплывала форма, с описанием проблемы и кнопкой. А пользователь в это время мог бы выделить Selection руками. И по нажатии кнопки на форме передать управление макросу.
У меня проблема в том, что я не понимаю как убрать эту форму в бэкграунд. Намекните, как решить мою задачку?
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Старый 02.09.2009, 09:03   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Для этой цели можно в процессе работы макроса использовать метод InputBox с запросом ввода диапазона (type:=8). Встретив такую строку, макрос выведет окно с запросом ввода диапазона. Потребуется мышкой выделить диапазон и нажать "ОК". После этого макрос продолжит свою работу. Пример:
Код:
Dim rng As Range
Set rng = Application.InputBox(prompt:="Select rng", Type:=8)
MsgBox rng.Address
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 02.09.2009, 09:04   #3
The_Prist
Участник клуба
 
Аватар для The_Prist
 
Регистрация: 17.07.2009
Сообщений: 1,088
По умолчанию

Так создайте форму с RefEdit.
При выполнении нужного Вам условия UserForm.Show
Пользователю предлагается выделить диапазон, который впоследствии выделяется.
Скрываете/выгружаете форму.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru
The_Prist вне форума Ответить с цитированием
Старый 02.09.2009, 12:35   #4
serafim09
Пользователь
 
Регистрация: 28.08.2009
Сообщений: 47
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Для этой цели можно в процессе работы макроса использовать метод InputBox с запросом ввода диапазона (type:=8). Встретив такую строку, макрос выведет окно с запросом ввода диапазона. Потребуется мышкой выделить диапазон и нажать "ОК". После этого макрос продолжит свою работу. Пример:
Код:
Dim rng As Range
Set rng = Application.InputBox(prompt:="Select rng", Type:=8)
MsgBox rng.Address
А можно файл с примером?
serafim09 вне форума Ответить с цитированием
Старый 02.09.2009, 12:55   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Посмотрите вложение. Запустите макрос "Main".
Вложения
Тип файла: rar Книга1.rar (6.1 Кб, 31 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 03.09.2009, 23:01   #6
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
Для этой цели можно в процессе работы макроса использовать метод InputBox с запросом ввода диапазона (type:=8). Встретив такую строку, макрос выведет окно с запросом ввода диапазона. Потребуется мышкой выделить диапазон и нажать "ОК". После этого макрос продолжит свою работу. Пример:
Код:
Dim rng As Range
Set rng = Application.InputBox(prompt:="Select rng", Type:=8)
MsgBox rng.Address
Я наверное что то не понимаю, но поставить +1 SAS888 я почему то не могу... Пишет, что я должен поставить сначала кому то ещё. А сказать спасибо есть за что: реально помогло. Сегодня на работе использовал в вышеуказанном макросе, и ещё в одном. Все работает, все круто! Спасибо!
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В книге защищен каждый лист. Как быстро снять защиту со всех листов, а потом ее поставить опять? Катик7 Microsoft Office Excel 13 28.04.2011 16:02
Как записать данные в MySQL бузу а потом считать их SeRhy PHP 1 12.06.2009 22:15
Как остановить поток а потом снова запустить? Des Общие вопросы Delphi 5 03.05.2009 12:35
как по макросу скопировать название имени фала в ячейку?? kievlyanin Microsoft Office Excel 8 16.04.2009 21:16
Помощь пользователю! Oleg Romanchuk БД в Delphi 10 27.08.2007 07:22