Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2014, 19:05   #1
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию listbox

Помогите, пожалуйста, устранить ошибку при повторном нажатии кнопки "фильтр". Файл прилагается. Заранее благодарен)) Смысл в том, чтобы при нажатии кнопки "фильтр" в листбоксе оставались выбранные значения.

Private Sub CommandButton4_Click()
Sheets(2).UsedRange.ClearContents
' Range("Лист1!D1").Value = ListBox1.Column(0)
TextBox1.Value = Range("Лист1!D1").Value
ListBox1.Clear
With Sheets(1)
.[a1].CurrentRegion.AutoFilter 1, TextBox1.Value
If .Cells(Rows.Count, "a").End(xlUp).Row > 1 Then
Sheets(2).UsedRange.ClearContents
.UsedRange.Offset(1).Copy Sheets(2).[a1] 'без заголовков или .UsedRange.Copy Sheets(2).[a1] - с заголовками
End If
.AutoFilterMode = 0
End With
Dim i As Long
ListBox1.ColumnCount = 3
With Worksheets("Лист2")
For i = 1 To .UsedRange.Rows.Count
ListBox1.AddItem .Cells(i, 1).Value
ListBox1.List(ListBox1.ListCount - 1, 1) = .Cells(i, 2).Value
ListBox1.List(ListBox1.ListCount - 1, 2) = .Cells(i, 3).Value
Next
End With
Cells(1, 4).ClearContents
TextBox1.Value = ""
End Sub
Вложения
Тип файла: rar Вариант.rar (20.6 Кб, 10 просмотров)

Последний раз редактировалось Гыгыка; 07.06.2014 в 19:51.
Гыгыка вне форума Ответить с цитированием
Старый 07.06.2014, 19:53   #2
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Не знаю, что за ошибка была и как её повторить, вот вариант фильтра.
Вложения
Тип файла: rar Вариант2.rar (19.7 Кб, 17 просмотров)
kalbasiatka вне форума Ответить с цитированием
Старый 07.06.2014, 20:35   #3
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию

Спасибо за ответ! Смысл в том, в форме нажимаю кнопку "заполнение списка" - листбокс заполняется...затем выбрав определенную строку в листбоксе нажимаю кнопку фильтр и листбокс заполняется отфильтрованными значениями (из выбранной строки по первому столбцу)...при первом нажатии на фильтр все идеально, но при нажатии во второй раз или когда строка в листбоксе не выделена выдает ошибку((((
Гыгыка вне форума Ответить с цитированием
Старый 07.06.2014, 20:53   #4
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

А какие манипуляции в дальнейшем будут с выбранной строкой?
kalbasiatka вне форума Ответить с цитированием
Старый 07.06.2014, 21:02   #5
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию

В общем в заполненном листбоксе, состоящим из н-го количества строк, при выборе строки, нажимаю кнопку фильтр и листбокс обновляется и заполняется отфильтрованными данными. фильтрация происходит по данным первой колонки listbox.list(0). вот как то так.
Гыгыка вне форума Ответить с цитированием
Старый 07.06.2014, 21:31   #6
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Это для моего примера, если что.
Код:
Private Sub CommandButton4_Click() 
    Dim i&, crit$
    With Me.ListBox1
        crit = .List(.ListIndex, 0)
        .Clear
        For i = 1 To UBound(a)
            If a(i, 1) = crit Then
                .AddItem
                .List(.ListCount - 1, 0) = a(i, 1)
                .List(.ListCount - 1, 1) = a(i, 2)
                .List(.ListCount - 1, 2) = a(i, 3)
            End If
        Next
    End With
End Sub
kalbasiatka вне форума Ответить с цитированием
Старый 07.06.2014, 22:01   #7
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию

Все работает, но вот только при нажтии кнопки фильтр когда не выбрана ни одна строка ф листбоксе выдает ошибку...вопрос в том как это устранить?!
Гыгыка вне форума Ответить с цитированием
Старый 07.06.2014, 22:03   #8
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию

Все работает...вопрос в том, что когда ни одна строка в листбоксе не выбрана, при нажатии кнопки фильтр выдает ошибку?! как это устранить?!
Гыгыка вне форума Ответить с цитированием
Старый 07.06.2014, 22:42   #9
kalbasiatka
Форумчанин
 
Регистрация: 21.10.2012
Сообщений: 208
По умолчанию

Добавить строку
Код:
With Me.ListBox1
        If .ListIndex < 0 Then Exit Sub
kalbasiatka вне форума Ответить с цитированием
Старый 07.06.2014, 22:55   #10
Гыгыка
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 11
По умолчанию

Спасибо, все работает)))
Гыгыка вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строк c listbox на listbox WinApi Alll_ Visual C++ 1 21.11.2013 03:34
используя процедуру keypress и фунцию listbox.при нажатии на listbox менялась ее высота Алекс38 Общие вопросы Delphi 1 19.09.2012 19:36
Чем отличается ListBox.Count от ListBox.Items.Count bakanaev Общие вопросы Delphi 5 16.08.2012 12:35
как добавить в listbox файлы(пишу с помощью bassplayer)(Listbox+opendialog=play) blackstersl Общие вопросы Delphi 11 09.06.2010 13:23
Listbox SnowSin Помощь студентам 6 10.12.2009 08:19