Новости:

Подпишитесь на рассылку новых сообщений форума через службу рассылок: Subscribe.ru

Главное меню

VBA, скрытие строк на основании данных

Автор next_q_for_you, 21.10.2021, 12:21

« назад - далее »

next_q_for_you

Товарищи, добрый день!
Очень нужна ваша помощь в следующем:
Есть макрос, да, криво сделан.
Суть его должна заключаться в том, чтобы на основании выбора значения (Да/Нет) в ячейке I39, I40 и I41, скрывались строки  58-66, 67-76, 77-80.
Поскольку VBA совсем не знаю, то думал что можно будет сделать линк на значения в колонке G - ячейки G39, G40 и G41 и на основании формулы если(I40="Да";1;0), но при наличии формулы в колонке G макрос не работает.
Помогите пожалуйста макрос переобуть на текстовое значение Да/Нет в ячейках I39,40,41.
Сам макрос:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$G$39" Then
    Rows("58:66").EntireRow.Hidden = [g39] = 0
    Rows(57 - ([g39] = 0) * 9).EntireRow.Hidden = ([g39] = 0)
End If
If Target.Address = "$G$40" Then
    Rows("67:76").EntireRow.Hidden = [g40] = 0
    Rows(66 - ([g40] = 0) * 10).EntireRow.Hidden = ([g40] = 0)
End If
If Target.Address = "$G$41" Then
    Rows("77:80").EntireRow.Hidden = [g41] = 0
    Rows(76 - ([g41] = 0) * 4).EntireRow.Hidden = ([g41] = 0)
End If
End Sub


Прилагаю файл. Надеюсь на вашу помощь.

Serge 007

Здравствуйте

Цитата: next_q_for_you от 21.10.2021, 12:21...макрос переобуть на текстовое значение Да/Нет в ячейках I39...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("i39") = "Да" Then Rows("58:66").EntireRow.Hidden = True
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

next_q_for_you

#2
Сергей, добрый день.
При выборе ответа Да/Нет (не принципиально), строки скрываются. Но при смене выбора с "нет" на "да", строки не появляются обратно.
Я скорее всего не до конца сформулировал просьбу. Извиняюсь.

Serge 007

Цитата: next_q_for_you от 21.10.2021, 14:56при смене выбора с "нет" на "да", строки не появляются обратно.
Тут уж могли сами догадаться что в код дописать :)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("i39") = "Да" Then Rows("58:66").EntireRow.Hidden = True
    If Range("i39") = "Нет" Then Rows("58:66").EntireRow.Hidden = False
End Sub
или так (для любых не "Да"):Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Range("i39") = "Да" Then Rows("58:66").EntireRow.Hidden = True Else Rows("58:66").EntireRow.Hidden = False
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

next_q_for_you

#4
Спасибо!