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

Вход

Регистрация

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

 

= Мир MS Excel/Вывод значений в ComboBox по условию - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод значений в ComboBox по условию (Макросы/Sub)
Вывод значений в ComboBox по условию
4lasa Дата: Воскресенье, 02.12.2018, 18:55 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Здравствуйте уважаемые гуру Excel!
Возникла небольшая проблема, но никак не могу её решить.
Суть заключается в том, что при выборе (ComboBox1) марки автомобиля (колонка A), в ComboBox2 должны появиться варианты модели автомобиля выбранной марки (при сопоставлении колонок C и D).
Заранее благодарен!!!
К сообщению приложен файл: avto.xlsm(36.3 Kb)
 
Ответить
СообщениеЗдравствуйте уважаемые гуру Excel!
Возникла небольшая проблема, но никак не могу её решить.
Суть заключается в том, что при выборе (ComboBox1) марки автомобиля (колонка A), в ComboBox2 должны появиться варианты модели автомобиля выбранной марки (при сопоставлении колонок C и D).
Заранее благодарен!!!

Автор - 4lasa
Дата добавления - 02.12.2018 в 18:55
StoTisteg Дата: Воскресенье, 02.12.2018, 20:33 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
[vba]
Код
Private Sub ComboBox1_Change
    Dim rws As Integer

    Me.ComboBox2.Clear
    If Me.ComboBox1.ListIndex=-1 Then Exit Sub
    'Me.ComboBox2.Enabled=True 'По фэншую Me.ComboBox2 должен быть запрещён по умолчанию, при конструировании формы
    rws=Columns(3).Find(Me.ComboBox1.Value).Row
    Do While Cells(rws,3).Value=Me.ComboBox1.Value
        With Me.ComboBox2
            .AddItem
            .List(.ListCount-1,0)=Cells(rws,4).Value
        End With
        rws=rws+1
    Loop
End Sub
[/vba]Но это не тестировано, дома на Винду перезагружаться лень...


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Воскресенье, 02.12.2018, 20:37
 
Ответить
Сообщение[vba]
Код
Private Sub ComboBox1_Change
    Dim rws As Integer

    Me.ComboBox2.Clear
    If Me.ComboBox1.ListIndex=-1 Then Exit Sub
    'Me.ComboBox2.Enabled=True 'По фэншую Me.ComboBox2 должен быть запрещён по умолчанию, при конструировании формы
    rws=Columns(3).Find(Me.ComboBox1.Value).Row
    Do While Cells(rws,3).Value=Me.ComboBox1.Value
        With Me.ComboBox2
            .AddItem
            .List(.ListCount-1,0)=Cells(rws,4).Value
        End With
        rws=rws+1
    Loop
End Sub
[/vba]Но это не тестировано, дома на Винду перезагружаться лень...

Автор - StoTisteg
Дата добавления - 02.12.2018 в 20:33
Kuzmich Дата: Воскресенье, 02.12.2018, 20:38 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 383
Репутация: 75 ±
Замечаний: 0% ±

Excel 2003
В столбце А марка AlfaRomeo, а в столбце С Alfa Romeo и поиск ничего не найдет
 
Ответить
СообщениеВ столбце А марка AlfaRomeo, а в столбце С Alfa Romeo и поиск ничего не найдет

Автор - Kuzmich
Дата добавления - 02.12.2018 в 20:38
StoTisteg Дата: Воскресенье, 02.12.2018, 20:49 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
Kuzmich, это уже проблема файла-примера. Можно, конечно, обработчик ошибок прикрутить...[vba]
Код
Private Sub ComboBox1_Change
    
    Dim rws As Integer

    Me.ComboBox2.Clear
    If Me.ComboBox1.ListIndex=-1 Then Exit Sub
    'Me.ComboBox2.Enabled=True 'По фэншую Me.ComboBox2 должен быть запрещён по умолчанию, при конструировании формы
    Err.Clear
    On Error Resume Next
    rws=Columns(3).Find(Me.ComboBox1.Value).Row
    If Err.Number<>0 Then
        MsgBox "Вах, дарагой! " & Me.ComboBox1.Value & " угнали, да!"
        Exit Sub
    End If
    Do While Cells(rws,3).Value=Me.ComboBox1.Value
        With Me.ComboBox2
            .AddItem
            .List(.ListCount-1,0)=Cells(rws,4).Value
        End With
        rws=rws+1
    Loop

End Sub
[/vba]


Интуитивно понятный код - это когда интуитивно понятно, что это код.

Сообщение отредактировал StoTisteg - Воскресенье, 02.12.2018, 20:55
 
Ответить
СообщениеKuzmich, это уже проблема файла-примера. Можно, конечно, обработчик ошибок прикрутить...[vba]
Код
Private Sub ComboBox1_Change
    
    Dim rws As Integer

    Me.ComboBox2.Clear
    If Me.ComboBox1.ListIndex=-1 Then Exit Sub
    'Me.ComboBox2.Enabled=True 'По фэншую Me.ComboBox2 должен быть запрещён по умолчанию, при конструировании формы
    Err.Clear
    On Error Resume Next
    rws=Columns(3).Find(Me.ComboBox1.Value).Row
    If Err.Number<>0 Then
        MsgBox "Вах, дарагой! " & Me.ComboBox1.Value & " угнали, да!"
        Exit Sub
    End If
    Do While Cells(rws,3).Value=Me.ComboBox1.Value
        With Me.ComboBox2
            .AddItem
            .List(.ListCount-1,0)=Cells(rws,4).Value
        End With
        rws=rws+1
    Loop

End Sub
[/vba]

Автор - StoTisteg
Дата добавления - 02.12.2018 в 20:49
Kuzmich Дата: Воскресенье, 02.12.2018, 20:54 | Сообщение № 5
Группа: Проверенные
Ранг: Обитатель
Сообщений: 383
Репутация: 75 ±
Замечаний: 0% ±

Excel 2003
If Err.Number<>) Then
опечатка?
 
Ответить
СообщениеIf Err.Number<>) Then
опечатка?

Автор - Kuzmich
Дата добавления - 02.12.2018 в 20:54
StoTisteg Дата: Воскресенье, 02.12.2018, 21:01 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
Ну да, исправил.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеНу да, исправил.

Автор - StoTisteg
Дата добавления - 02.12.2018 в 21:01
4lasa Дата: Понедельник, 03.12.2018, 17:18 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
StoTisteg, вставил код, но не работает...
 
Ответить
СообщениеStoTisteg, вставил код, но не работает...

Автор - 4lasa
Дата добавления - 03.12.2018 в 17:18
StoTisteg Дата: Понедельник, 03.12.2018, 17:49 | Сообщение № 8
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
А куда Вы его вставили? Надо в модуль формы.


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеА куда Вы его вставили? Надо в модуль формы.

Автор - StoTisteg
Дата добавления - 03.12.2018 в 17:49
StoTisteg Дата: Понедельник, 03.12.2018, 17:53 | Сообщение № 9
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
УМВР. Приложил файл.
К сообщению приложен файл: 0153440.xlsm(36.2 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеУМВР. Приложил файл.

Автор - StoTisteg
Дата добавления - 03.12.2018 в 17:53
4lasa Дата: Понедельник, 03.12.2018, 19:17 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 18
Репутация: 0 ±
Замечаний: 20% ±

Excel 2010
Спасибо огромное!
 
Ответить
СообщениеСпасибо огромное!

Автор - 4lasa
Дата добавления - 03.12.2018 в 19:17
StoTisteg Дата: Понедельник, 03.12.2018, 22:19 | Сообщение № 11
Группа: Авторы
Ранг: Старожил
Сообщений: 1089
Репутация: 94 ±
Замечаний: 0% ±

Excel 2010
4lasa, у Вас как-то странно данные организованы... Я бы сделал список марок скрытым листом2, списки моделей - на каждую марку отдельный скрытый лист, а юзверю вообще показывал бы на Листе1 большую кнопку "СДЕЛАТЬ ЗАШИБИСЬ"...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
Сообщение4lasa, у Вас как-то странно данные организованы... Я бы сделал список марок скрытым листом2, списки моделей - на каждую марку отдельный скрытый лист, а юзверю вообще показывал бы на Листе1 большую кнопку "СДЕЛАТЬ ЗАШИБИСЬ"...

Автор - StoTisteg
Дата добавления - 03.12.2018 в 22:19
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывод значений в ComboBox по условию (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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