Страницы: 1
RSS
Отобразить скрытую строку по тому же условию
 
Добрый вечер, форумчане.
На определенной таблице использую userForm Checkbox (выбор галочками) для скрытия и отображения строк по условиям.
Код
Public ESS_num&
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ESS_num = Range("B4:B35").Find("CCB-020", , xlValues, xlWhole).Row
        Rows(ESS_num).Select
        Selection.EntireRow.Hidden = True
    Else
        ESS_num = Range("B4:B35").Find("CCB-020", , xlValues, xlWhole).Row
        Rows(ESS_num).Select
        Selection.EntireRow.Hidden = False
    End If
End Sub
В диапазоне B4:B35 ищу значение CCB-020 и скрываю.
Когда я убираю галочку, по логике строка должна обратно отображаться... Но после скрытия макрос не может найти значение "CCB-020".
Как можно обойти, исправить?
Спасибо.
 

на втором чекбоксе у Вас почти правильно

Код
Private Sub CheckBox2_Click()    Dim i As Long
    For i = 4 To 35
        If Cells(i, 2).Value = "LER-816" Then
            If CheckBox2.Value = True Then
                Rows(i).Hidden = True
            Else
                Rows(i).Hidden = False
            End If
        End If
    Next i
End Sub

сам подход не очень...с таким количеством чекбоксов лучше словарем собрать все уникальные значения, создать нужное количество чекбоксов программно при загрузке формы, а процедуру обработки сделать через модуль класса..

 
yozhik, во втором Чекбоксе перебор идет, визуально долгая обработка. А строк у меня еще добавится раза в 2.
а на счет вашей идеи "словарем собрать все уникальные значения, создать нужное количество чекбоксов программно при загрузке формы" - это я не самостоятельно не осилю))) я любитель EXCEL)
Если бы хоть маленький пример, то можно было бы попробовать поразбираться.
 
Цитата
slesarok написал: Если бы хоть маленький пример
РАБОТА С МОДУЛЯМИ КЛАССОВ
Согласие есть продукт при полном непротивлении сторон
 
Код от  yozhik, можно чуть сократить
Код
Private Sub CheckBox2_Click()
Dim i As Long
    For i = 4 To 35
        If Cells(i, 2).Value = "LER-816" Then
            Rows(i).Hidden = CheckBox2
        End If
    Next i
End Sub
Согласие есть продукт при полном непротивлении сторон
 
Sanja, спасибо за Изм в коде и за ссылку, поизучаю для будущих улучшений
 
http://perfect-excel.ru/publ/excel/makrosy_i_programmy_vba/ischerpyvajushhee_opis­anie_obekta_diction...
работа со словарем
в файле Ваш файл через модуль классов. Просто добавляете во втором столбце значения и ничего больше не делаете
 
А для моего понимания, используя CheckBox можно ли сделать сохранение галочек, то есть если я их выбрал (скрыл\отобразил определенные строк) то при следующем запуске макроса они сохранялись?
 
Можно, в словарь надо не только ключи, но и значения 0 или 1 в зависимости от того скрыта строка или нет, и при добавлении чекбокса по ключу присваивать ему значение item ключа
Страницы: 1
Наверх