powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Продолжить выполнение модуля при нажатии кнопки на форме
10 сообщений из 10, страница 1 из 1
Продолжить выполнение модуля при нажатии кнопки на форме
    #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
Продолжить выполнение модуля при нажатии кнопки на форме
    #34608987
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).
...
Рейтинг: 0 / 0
Продолжить выполнение модуля при нажатии кнопки на форме
    #34608990
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbaproмое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).PS потом сколько хочешь можно делать циклов .Show/.Hide если нужно продолжать с другими данными.
...
Рейтинг: 0 / 0
Продолжить выполнение модуля при нажатии кнопки на форме
    #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
Продолжить выполнение модуля при нажатии кнопки на форме
    #34609047
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон! всё нормально!

В цикле ошибка, а я на формы грешу
...
Рейтинг: 0 / 0
Продолжить выполнение модуля при нажатии кнопки на форме
    #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
Продолжить выполнение модуля при нажатии кнопки на форме
    #34609051
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vbaproмое субъективное мнение:
немодальная форма - больше возни, возможно, лишние проверки состояния формы и т.д.
модальная форма: без проблем. по нажатию кнопки на форме прячь форму Me.Hide, код продолжает выполняться после UserForm1.Show. все элементы будут доступны чтоб взять из них значения. Только потом не забудь выгрузить форму (Unload UserForm1 или, в форме, Unload Me).


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

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

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


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


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