Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы
 
Уважаемые форумчане!

Пожалуйста, подскажите как заполнить массив выбранными значениями listbox чтобы потом использовать в автофильтре таблицы?
Предполагал таким образом, однако не работает.
Код
For ListboxItem = MyListBox.ListCount - 1 To 0 Step -1
If MyListBox.Selected(ListboxItem) Then
  Counter = Counter + 1
  ItemArray(Counter) = MyListBox.List(ListboxItem, 0)
End If
Next ListboxItem

SelectedItems = ItemArray(Counter)

With Thisworkbook.Sheets("Sheet1")
  .ListObjects("WbSheetTable").Range.AutoFilter Field:=1, Criteria1:=SelectedItems, Operator:=xlFilterValues
End With


Конечная цель отфильтровать первый столбец по выделенным значениям listbox.
Изменено: ac1-caesar - 31 Мар 2016 15:49:36
 
Помимо изменения кода, я изменил свойства у listbox'а и кнопки, чтобы они не перемещались и не изменялись при скрытии строк (у меня в ходе тестирования это происходило): щелкнул по listbox'у правой кнопкой - Формат объекта... - вкладка "Свойства".
 
Karataev, спасибо за помощь!
 
Добрый вечер!
Пытался переделать полученный здесь макрос под свои нужды... не шибко получается.
Прошу помочь по возможности... Нужно, чтобы при выборе значений в ListBox, срабатывал автофильтр на другом листе. При этом активация автофильтра выполнялась бы при выборе или снятия значения в ListBox, т.е. без использования кнопки.
Благодарю!
 
Пример во вложении
Код
Option Explicit

Sub Test()
Dim Arr()
Dim Str$, i%, u%
With Лист1
    u = 0
    For i = 0 To .ListBox1.ListCount - 1
        If .ListBox1.Selected(i) Then
            ReDim Preserve Arr(u)
            Arr(u) = .ListBox1.List(i, 0)
            u = u + 1
        End If
    Next i
End With
With Лист3.Range("$A$1:$A$24")
    If u = 0 Then .AutoFilter Field:=1: Exit Sub
    .AutoFilter Field:=1, Criteria1:=Array(Arr), Operator:=xlFilterValues
End With
End Sub
Никаких врагов, зато и никаких друзей.
 
Alemox, благодарю за вариант...

Однако при запуске ругается: "Unexpected error (32809)". Может дело в версии Excel? У меня наверное 2007.

И возможно ли настроить выполнение макроса без нажатия кнопки - чтобы сразу фильтр срабатывал при выборе значений в ListBox?
 
Исправил на чтобы кнопку не нажимать.
По поводу ошибки курите эту тему
Никаких врагов, зато и никаких друзей.
 
Варианты предыдущие не смотрел, но можно так без кнопок
Изменено: Nordheim - 15 Май 2019 09:04:41
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, при снятии всех галочек не получается.  ;)
Никаких врагов, зато и никаких друзей.
 
Alemox, Что не получается?
"Все гениальное просто, а все простое гениально!!!"
 
Фильтр не снимается при снятых галочках.
Никаких врагов, зато и никаких друзей.
 
Теперь снимается.
"Все гениальное просто, а все простое гениально!!!"
 
Благодарю за помощь!!!
Сейчас пытаюсь решить проблему выходящей ошибки...
Запустил .bat файл... Не помогло...
 
Заработало!
Установил сначала Пакет обновления 3 (SP3) содержит последние обновления для выпуска 2007 набора приложений Microsoft Office.
Затем Обновление для системы безопасности Microsoft Office 2007 suites (KB2596927)
Потом на всякий случай ещё раз забатил...
Макрос работает!!! Благодарю!
 
Столкнулся с непонятной проблемой... Может кто может прояснить этот момент?
Когда открываю рабочий файл, не могу нажать на галки в ListBox - как-будто это просто картинка...
Но стоит мне например удалить строку или снять закрепление области или перейти на другой лист и вернуться, - так галки начинают работать...
В чём может быть дело?
 
Может кто сталкивался (предыдущий пост)?
Или у Вас такой проблемы не возникает при открытии файла и выборе значений из списка в ListBox?
 
Решить момент помог запрет обновления экрана...
Код
Application.ScreenUpdating = False / True
Страницы: 1
Читают тему (гостей: 1)
Наверх