Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Изменить порядок присвоения комбо при инициализации формы - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменить порядок присвоения комбо при инициализации формы (Макросы/Sub)
Изменить порядок присвоения комбо при инициализации формы
Serge_007 Дата: Понедельник, 25.07.2022, 17:58 | Сообщение № 1
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Всем привет!

Ранее как-то не касался этой темы, но вот пришлось)
Инициализируется форма, при этом значения комбобоксов не успевают присваиваться, поскольку после инициализации первого комбо идет событие его изменения, при этом значения последующих комбо равны ""

Как этого избежать?

[vba]
Код
Private Sub UserForm_Initialize()
With Me.ComboBox1
    .RowSource = "Справочник!a2:a3"
    .Value = 1
End With
With Me.ComboBox2
    .RowSource = "Справочник!b2"
    .Value = 2
End With
With Me.ComboBox3
    .RowSource = "Справочник!c2"
    .Value = 3
End With

End Sub

Private Sub ComboBox1_Change()
MsgBox (Me.ComboBox3.Value)
End Sub
[/vba]
К сообщению приложен файл: forFile.xls (70.0 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеВсем привет!

Ранее как-то не касался этой темы, но вот пришлось)
Инициализируется форма, при этом значения комбобоксов не успевают присваиваться, поскольку после инициализации первого комбо идет событие его изменения, при этом значения последующих комбо равны ""

Как этого избежать?

[vba]
Код
Private Sub UserForm_Initialize()
With Me.ComboBox1
    .RowSource = "Справочник!a2:a3"
    .Value = 1
End With
With Me.ComboBox2
    .RowSource = "Справочник!b2"
    .Value = 2
End With
With Me.ComboBox3
    .RowSource = "Справочник!c2"
    .Value = 3
End With

End Sub

Private Sub ComboBox1_Change()
MsgBox (Me.ComboBox3.Value)
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 25.07.2022 в 17:58
RAN Дата: Понедельник, 25.07.2022, 19:01 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Добавь переменную модуля
[vba]
Код
Dim flag
Private Sub ComboBox1_Change()
    If Not flag Then MsgBox (Me.ComboBox3.Value)
End Sub

Private Sub UserForm_Initialize()
    flag = True
    With Me.ComboBox1
        .RowSource = "Ñïðàâî÷íèê!a2:a3"
        .Value = 1
    End With
    flag = False
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеДобавь переменную модуля
[vba]
Код
Dim flag
Private Sub ComboBox1_Change()
    If Not flag Then MsgBox (Me.ComboBox3.Value)
End Sub

Private Sub UserForm_Initialize()
    flag = True
    With Me.ComboBox1
        .RowSource = "Ñïðàâî÷íèê!a2:a3"
        .Value = 1
    End With
    flag = False
End Sub
[/vba]

Автор - RAN
Дата добавления - 25.07.2022 в 19:01
Pelena Дата: Понедельник, 25.07.2022, 19:05 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Привет.
Я правильно поняла, что при инициализации нужно отключить событие ComboBox1_Change? Можно использовать некий флаг
[vba]
Код
Dim init As Boolean

Private Sub ComboBox1_Change()
    If Not init Then
        MsgBox (Me.ComboBox3.Value)
    End If
End Sub

Private Sub UserForm_Initialize()
    init = True
    With Me.ComboBox2
        .RowSource = "Справочник!b2"
        .Value = 2
    End With
    With Me.ComboBox3
        .RowSource = "Справочник!c2"
        .Value = 3
    End With
    With Me.ComboBox1
        .RowSource = "Справочник!a2:a3"
        .Value = 1
    End With
    init = False
End Sub
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеПривет.
Я правильно поняла, что при инициализации нужно отключить событие ComboBox1_Change? Можно использовать некий флаг
[vba]
Код
Dim init As Boolean

Private Sub ComboBox1_Change()
    If Not init Then
        MsgBox (Me.ComboBox3.Value)
    End If
End Sub

Private Sub UserForm_Initialize()
    init = True
    With Me.ComboBox2
        .RowSource = "Справочник!b2"
        .Value = 2
    End With
    With Me.ComboBox3
        .RowSource = "Справочник!c2"
        .Value = 3
    End With
    With Me.ComboBox1
        .RowSource = "Справочник!a2:a3"
        .Value = 1
    End With
    init = False
End Sub
[/vba]

Автор - Pelena
Дата добавления - 25.07.2022 в 19:05
Serge_007 Дата: Вторник, 26.07.2022, 11:32 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Спасибо!


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеСпасибо!

Автор - Serge_007
Дата добавления - 26.07.2022 в 11:32
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Изменить порядок присвоения комбо при инициализации формы (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!