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

Вход

Регистрация

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

 

= Мир MS Excel/Выбор значений listbox по категориям - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выбор значений listbox по категориям (Макросы/Sub)
Выбор значений listbox по категориям
Asretyq Дата: Среда, 14.11.2018, 10:08 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый день
Есть listbox2, где выбираются категории
Как можно внести в listbox1 список только тех значений из ячейки B, которым соответствует категория в ячейке А.
К сообщению приложен файл: 123.xlsm (33.3 Kb)


Сообщение отредактировал Asretyq - Среда, 14.11.2018, 10:09
 
Ответить
СообщениеДобрый день
Есть listbox2, где выбираются категории
Как можно внести в listbox1 список только тех значений из ячейки B, которым соответствует категория в ячейке А.

Автор - Asretyq
Дата добавления - 14.11.2018 в 10:08
Asretyq Дата: Среда, 14.11.2018, 10:21 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
При выборе из listbox2 "красный" в listbox1 появляются значения - 107, 88, 33
При выборе из listbox2 "белый" в listbox1 появляются значения - 100, двойной слой
ну соответственно и для других цветов то, что соответствует напротив ячейки
 
Ответить
СообщениеПри выборе из listbox2 "красный" в listbox1 появляются значения - 107, 88, 33
При выборе из listbox2 "белый" в listbox1 появляются значения - 100, двойной слой
ну соответственно и для других цветов то, что соответствует напротив ячейки

Автор - Asretyq
Дата добавления - 14.11.2018 в 10:21
StoTisteg Дата: Среда, 14.11.2018, 10:23 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
А чем прямой перебор не устраивает?[vba]
Код
Private Sub ListBox2_Change()

   Dim i As Integer
   
   Me.ListBox1.Clear
   For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
      If Cells(i, 1).Value = Me.ListBox2.Value Then
         Me.ListBox1.AddItem
         Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Cells(i, 2).Value
      End If
   Next i

End Sub
[/vba]
К сообщению приложен файл: 6847525.xlsm (23.7 Kb)


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеА чем прямой перебор не устраивает?[vba]
Код
Private Sub ListBox2_Change()

   Dim i As Integer
   
   Me.ListBox1.Clear
   For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row
      If Cells(i, 1).Value = Me.ListBox2.Value Then
         Me.ListBox1.AddItem
         Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = Cells(i, 2).Value
      End If
   Next i

End Sub
[/vba]

Автор - StoTisteg
Дата добавления - 14.11.2018 в 10:23
Asretyq Дата: Среда, 14.11.2018, 10:29 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, да устраивает конечно)))
спасибо, оказывается так легко все, а у меня в голове другие коды на 1000 строк)))
 
Ответить
СообщениеStoTisteg, да устраивает конечно)))
спасибо, оказывается так легко все, а у меня в голове другие коды на 1000 строк)))

Автор - Asretyq
Дата добавления - 14.11.2018 в 10:29
StoTisteg Дата: Среда, 14.11.2018, 10:43 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Не, ну если в "боевом" файле десятки тысяч строк, например, то есть смысл подумать над использованием AdvancedFilter и CpecialCells, но для сотни-другой и перебор сойдёт.


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

Автор - StoTisteg
Дата добавления - 14.11.2018 в 10:43
_Boroda_ Дата: Среда, 14.11.2018, 11:13 | Сообщение № 6
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Вариант с уникальными значениями столбца В
[vba]
Код
Private Sub ListBox2_Change()
    r0_ = 1
    n_ = Cells(Rows.Count, 1).End(3).Row - r0_ + 1
    ar = Cells(r0_, 1).Resize(n_, 2)
    z_ = Me.ListBox2.Value
    With CreateObject("Scripting.Dictionary")
        For i = 1 To n_
            If ar(i, 1) = z_ Then
                aaa = .Item(ar(i, 2))
            End If
        Next i
        Me.ListBox1.List = .keys
    End With
End Sub
[/vba]
К сообщению приложен файл: 123-6-1.xlsm (24.8 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеВариант с уникальными значениями столбца В
[vba]
Код
Private Sub ListBox2_Change()
    r0_ = 1
    n_ = Cells(Rows.Count, 1).End(3).Row - r0_ + 1
    ar = Cells(r0_, 1).Resize(n_, 2)
    z_ = Me.ListBox2.Value
    With CreateObject("Scripting.Dictionary")
        For i = 1 To n_
            If ar(i, 1) = z_ Then
                aaa = .Item(ar(i, 2))
            End If
        Next i
        Me.ListBox1.List = .keys
    End With
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 14.11.2018 в 11:13
Asretyq Дата: Среда, 14.11.2018, 11:58 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
StoTisteg, в моем случае сойдет, спасибо
_Boroda_, подключил библиотеку Microsoft scripting runtime, не хочет работать, может другая библиотека задействована?
 
Ответить
СообщениеStoTisteg, в моем случае сойдет, спасибо
_Boroda_, подключил библиотеку Microsoft scripting runtime, не хочет работать, может другая библиотека задействована?

Автор - Asretyq
Дата добавления - 14.11.2018 в 11:58
_Boroda_ Дата: Среда, 14.11.2018, 12:01 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
подключил библиотеку Microsoft scripting runtime

А зачем? Ну нужно ничего подключать. Если бы было раннее связывание, то да, а у нас позднее. Отключайте ее взад как было


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
подключил библиотеку Microsoft scripting runtime

А зачем? Ну нужно ничего подключать. Если бы было раннее связывание, то да, а у нас позднее. Отключайте ее взад как было

Автор - _Boroda_
Дата добавления - 14.11.2018 в 12:01
Asretyq Дата: Среда, 14.11.2018, 12:16 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, Cant find project or library и выделяет [vba]
Код
r0_ =1
[/vba]
 
Ответить
Сообщение_Boroda_, Cant find project or library и выделяет [vba]
Код
r0_ =1
[/vba]

Автор - Asretyq
Дата добавления - 14.11.2018 в 12:16
_Boroda_ Дата: Среда, 14.11.2018, 12:20 | Сообщение № 10
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
У Вас наверху наверняка написано Опшен Эксклюзит. Сотрите его (плохой совет, но я делаю именно так) или объявите все переменные
[vba]
Код
Dim r0_, n_, ar, z_, i, aaa
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеУ Вас наверху наверняка написано Опшен Эксклюзит. Сотрите его (плохой совет, но я делаю именно так) или объявите все переменные
[vba]
Код
Dim r0_, n_, ar, z_, i, aaa
[/vba]

Автор - _Boroda_
Дата добавления - 14.11.2018 в 12:20
Asretyq Дата: Среда, 14.11.2018, 12:27 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 200
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
_Boroda_, не прописан, я скачал файл ваш, переменные прописал стало работать
может файл косячный, файл еще не сохраняет изменения))
в общем перенесу код, Спасибо за помощь)
 
Ответить
Сообщение_Boroda_, не прописан, я скачал файл ваш, переменные прописал стало работать
может файл косячный, файл еще не сохраняет изменения))
в общем перенесу код, Спасибо за помощь)

Автор - Asretyq
Дата добавления - 14.11.2018 в 12:27
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Выбор значений listbox по категориям (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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