Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
1

Checkbox на Userform. Как создать мультивыбор Checkbox

09.12.2015, 12:52. Просмотров 1930. Ответов 15
Метки нет (Все метки)

Добрый день! Прошу помощи реализовать код для возможности мультивыбора Checkbox. Каждый Checkbox фильтрует по определенному критерию, но загвоздка в том, что какой Checkbox был выбран последним, только по тому критерию и фильтрует. Как сделать так, чтобы фильтрация производилось по всем выбранным Checkbox? Спасибо.

Visual Basic
1
2
3
4
Private Sub CheckBox1_Click()
Worksheets("Лист1").Range("$A$10:$AC$2970").AutoFilter Field:=2, Criteria1:= _
        "Критерий1"
End Sub
Visual Basic
1
2
3
4
Private Sub CheckBox2_Click()
Worksheets("Лист1").Range("$A$10:$AC$2970").AutoFilter Field:=2, Criteria1:= _
        "Критерий2"
End Sub
Visual Basic
1
2
3
Private Sub CommandButton1_Click()
    UserForm2.Hide
End Sub
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2015, 12:52
Ответы с готовыми решениями:

Выскакивание UserForm после нажатия на CheckBox
Здравствуйте! Подскажите, пожалуйста, как реализовать данную задачу: 1) При нажатии на...

Как одновременно поменять свойство value у checkbox с true на false для всех checkbox-ов, находящихся на одном листе?
Всем добрый день! Подскажите, пожалуйста, как одновременно поменять свойство value у checkbox с...

Перебор CheckBox для создания новых листов с названием из CheckBox.Caption
Привет всем! Для каждого CheckBox получается сделать. У меня их больше 20. Возможно ли...

VBA Access. Программно создать CheckBox
Подскажите как программно создать CheckBox и разместить его на форме.

Программно создать CheckBox и обработчик к нему
Задача: есть форма UserForm4 с кнопкой CommandButton1 и Label1. Форма сама расположена в шаблоне...

15
SoftIce
es geht mir gut
11207 / 4634 / 1167
Регистрация: 27.07.2011
Сообщений: 11,354
Завершенные тесты: 1
09.12.2015, 13:02 2
Цитата Сообщение от rustim86 Посмотреть сообщение
какой Checkbox был выбран последним, только по тому критерию и фильтрует
Да и от состояния Checkbox у Вас тоже ничего не зависит, фильтрация происходит по клику
Добавлено через 3 минуты
Вам нужно что-то типа
Visual Basic
1
2
3
4
Private Sub CommandButton2_Click()
   if CheckBox1 then Worksheets("Лист1").Range("$A$10:$AC$2970").AutoFilter Field:=2, Criteria1:=  "Критерий1"
   if CheckBox2 then Worksheets("Лист1").Range("$A$10:$AC$2970").AutoFilter Field:=2, Criteria1:=  "Критерий2"
End Sub
То есть, проверку состояния CheckBox-ов поставить на отдельную кнопку
0
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
09.12.2015, 13:08  [ТС] 3
SoftIce, сейчас попробую, спасибо

Добавлено через 5 минут
SoftIce, увы, ничего не изменилось...
0
SoftIce
es geht mir gut
11207 / 4634 / 1167
Регистрация: 27.07.2011
Сообщений: 11,354
Завершенные тесты: 1
09.12.2015, 13:23 4
Цитата Сообщение от rustim86 Посмотреть сообщение
ничего не изменилось.
Не верю А они не противоречат друг другу?
А добавить еще для двух критериев?
Visual Basic
1
 if CheckBox1 and CheckBox2  then Worksheets("Лист1").Range("$A$10:$AC$2970").AutoFilter Field:=2, Criteria1:=  "Критерий1", Operator:=xlAnd,  Criteria2 := "Критерий2"
0
09.12.2015, 13:23
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
09.12.2015, 13:58  [ТС] 5
SoftIce, теперь изменилось, ставлю галочки в CheckBox и ничего не происходит. Может чего-то не хватает?
0
pashulka
3383 / 1826 / 765
Регистрация: 01.12.2010
Сообщений: 3,623
09.12.2015, 14:14 6
rustim86, Соберите все полученные советы в один

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub CommandButton1_Click() 'XL97-2003
    Select Case True
        Case CheckBox1.Value And CheckBox2.Value
           Worksheets("Лист1").Range("A10:AC2970").AutoFilter 2, "Критерий1", xlOr, "Критерий2"
        Case CheckBox1.Value
           Worksheets("Лист1").Range("A10:AC2970").AutoFilter 2, "Критерий1"
        Case CheckBox2.Value
           Worksheets("Лист1").Range("A10:AC2970").AutoFilter 2, "Критерий2"
        Case Else
           'Возможно здесь имеет смысл отобразить все записи
    End Select
End Sub
1
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
09.12.2015, 14:31  [ТС] 7
pashulka, благодарю. Вопрос, в случае если понадобиться добавить критерии, как будет выглядеть макрос? И еще вопрос, после закрытия формы, как бы сделать так, чтобы галочки снимались?
0
pashulka
3383 / 1826 / 765
Регистрация: 01.12.2010
Сообщений: 3,623
09.12.2015, 15:16 8
Критериев в фильтре только два. Но если Вы используете XL2007(или старше) и хотите создать имитацию фильтра (где критерием отбора может быть массив), то просто замените все свои флажки (checkbox) на один список (listbox) с многократным выделением. Если этот вариант интересен, пишите.
0
Изображения
Тип файла: png image001.png (1.6 Кб, 77 просмотров)
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
09.12.2015, 15:22  [ТС] 9
pashulka, да, именно многократное выделение и нужно сделать. Как это реализовать?
0
eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 92
09.12.2015, 15:31 10
галочки должны убираться автоматически.
если же значение checkbox привязано к ячейке, то можно при выгрузки формы "обнулить" значение ячейки.
0
pashulka
3383 / 1826 / 765
Регистрация: 01.12.2010
Сообщений: 3,623
09.12.2015, 15:57 11
rustim86, Смотрите обещанный пример
2
Вложения
Тип файла: zip Sample_for_Rustim86.zip (12.7 Кб, 24 просмотров)
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
10.12.2015, 12:35  [ТС] 12
pashulka, спасибо огромное! Буду разбираться и пробовать.

Добавлено через 20 часов 32 минуты
pashulka, благодарю еще раз, все получилось по вашему примеру. Еще один вопрос у меня, как бы реализовать прекращение работы макросов в книге если не было выбрано ни одного варианта из списка?
0
pashulka
3383 / 1826 / 765
Регистрация: 01.12.2010
Сообщений: 3,623
10.12.2015, 14:22 13
Если под термином "прекращение работы макросов" имеется ввиду выгрузка формы, с которой работает пользователь, то просто найдите строку с моим комментарием 'По желанию и вместо установки/снятия фильтра используйте Unload Me
0
rustim86
0 / 0 / 0
Регистрация: 01.09.2015
Сообщений: 50
10.12.2015, 14:40  [ТС] 14
pashulka, нет, имеется в виду, чтобы фильтр не срабатывал, если не выбрано ни одного из вариантов из списка. С выгрузкой формы проблем нет.
0
eritik
18 / 19 / 5
Регистрация: 14.09.2015
Сообщений: 92
10.12.2015, 14:48 15
If iCount = 0 Then
MsgBox "нет параметров для фильтрации"
Exit Sub
End If
0
pashulka
3383 / 1826 / 765
Регистрация: 01.12.2010
Сообщений: 3,623
10.12.2015, 14:52 16
Если не выбрано ни одного условия(критерия), то значение переменной iCount остаётся =0 и фильтрация не осуществляется, ибо оная происходит, только если If iCount > 0

P.S. Может Вы просто хотите отобразить все строки(снять фильтр), тогда смотрите в справке метод ShowAllData об'екта Worksheet
0
10.12.2015, 14:52
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2015, 14:52

Как связать CheckBox с ячейкой?
Народ, ПоМоГиТе! Задание звучит так: Свяжите Флажок(CheckBox1) с ячейкой A1 рабочего листа....

Как привязать CheckBox к ячейке?
Добрый день. Не мог бы кто-нибудь пояснить некоторые моменты. Со вчерашнего вечера не могу...

CheckBox'es на форме как массив
Привет, на пользовательской форме имеется несколько CheckBox'es. Можно ли к ним обратится как к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.