Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Продолжить выполнение модуля при нажатии кнопки на форме / 10 сообщений из 10, страница 1 из 1
20.06.2007, 19:36:46
    #34608968
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
Есть модуль, в котором следующая строка
Код: plaintext
1.
2.
3.
....
 UserForm1.ListBox1.RowSource = "Реестр!" & RangeSourse.Address
 UserForm1.ListBox1.ColumnCount = RangeSourse.Columns.Count
 UserForm1.Show

После строки
Код: plaintext
UserForm1.Show
Загружается форма, я выбираю нужные мне данные и хочу, чтобы по нажатию кнопки продолжилось бы выполнение модуля откуда была запущена форма, но использовались бы выделенные элементы в листбоксе на форме.

Что-то типа


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
....
 UserForm1.ListBox1.RowSource = "Реестр!" & RangeSourse.Address
 UserForm1.ListBox1.ColumnCount = RangeSourse.Columns.Count
 UserForm1.Show
 If UserForm1.CommandButton1 = True Then
    
    For i =  0  To RangeSourse.Rows.Count -  1  Step - 1 
        If UserForm1.ListBox1.Selected(i) = True Then
            MsgBox UserForm1.ListBox1.List(i,  0 )
            RangeSourse.Rows(i).EntireRow.Delete
            MsgBox "Заявка " & UserForm1.ListBox1.List(i,  1 ) & " удалена из реестр"
        End If
    Next i
  
 End If
...

Можно ли так сделать?
...
Рейтинг: 0 / 0
20.06.2007, 19:48:56
    #34608987
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
мое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).
...
Рейтинг: 0 / 0
20.06.2007, 19:50:46
    #34608990
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
vbaproмое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).PS потом сколько хочешь можно делать циклов .Show/.Hide если нужно продолжать с другими данными.
...
Рейтинг: 0 / 0
20.06.2007, 20:14:22
    #34609026
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
vbaproмое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).

Не получается у меня.

1) Я так и делаю Me.Hide. Элементы доступны, но какие из них выделены уже не доступно!

Код: plaintext
1.
2.
        If UserForm1.ListBox1.Selected(i) = True Then
           ...
        End If

2) Как отменить действие и прервать выполнение модуля по нажатию на кнопку отмена?
...
Рейтинг: 0 / 0
20.06.2007, 20:30:48
    #34609047
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
Пардон! всё нормально!

В цикле ошибка, а я на формы грешу
...
Рейтинг: 0 / 0
20.06.2007, 20:31:43
    #34609049
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
Ошибся
Было так
Код: plaintext
For i =  0  To RangeSourse.Rows.Count -  1  Step - 1 
А надо
Код: plaintext
For i = RangeSourse.Rows.Count -  1  To  0  Step - 1 
...
Рейтинг: 0 / 0
20.06.2007, 20:32:39
    #34609051
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
vbaproмое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).


Спасибо заодно почитал, что такое модальная - немодальная
...
Рейтинг: 0 / 0
20.06.2007, 20:34:21
    #34609054
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
Deggasad1) Я так и делаю Me.Hide. Элементы доступны, но какие из них выделены уже не доступно!Естественно. При прятании формы она теряет фокус и для всех контролов на форме выполняется потеря фокуса. Что и приводит к снятию выделения в списках...
Надо перед тем как прятать форму обработать все контролы, запомнить все что нужно в каких-нибудь глобальных переменных и только потом прятать форму.

Deggasad2) Как отменить действие и прервать выполнение модуля по нажатию на кнопку отмена?Вообще-то, ты никак не можешь прервать выполнение модуля, потому что модуль не выполняется никогда.
Выполняются процедуры и функции. А чтобы досрочно завешить процедуру или функцию надо дать команду Exit Sub или Exit Function.
...
Рейтинг: 0 / 0
20.06.2007, 20:37:30
    #34609061
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
Deggasad1) Я так и делаю Me.Hide. Элементы доступны, но какие из них выделены уже не доступно!
Железный вариант - глобальные переменные.
призапуске формы можно из них инициализировать контролы,
при выходе туда записывать значения контролов

Deggasad2) Как отменить действие ...Отменить то, что сделал макрос нельзя, сам реализуй историю изменений.
Deggasad2) Как отменить прервать выполнение модуля по нажатию на кнопку отмена?Опять же через глобальную переменную. Кнопку нажал - blnStop=True {If blnStop Then End}
...
Рейтинг: 0 / 0
20.06.2007, 20:57:19
    #34609080
Deggasad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Продолжить выполнение модуля при нажатии кнопки на форме
vbapro
Железный вариант - глобальные переменные.


Спасибо, усёк.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Продолжить выполнение модуля при нажатии кнопки на форме / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]