Я сделал электронную таблицу, чтобы указать выбор украшений из ряда стандартных вариантов.
Есть пять отдельных диапазонов, так что это первый выбор, затем в каждом диапазоне есть дополнительные выборы.
Поэтому в начале моего листа я использовал «рамку» и пять «радиокнопок», и я связал этот выбор с ячейкой P1
,
Поэтому, как только этот выбор сделан, я хочу скрыть различные строки и показывать только выборки, относящиеся к первому выбору (строки 10-19, относящиеся к диапазону 1, строки 20-29, относящиеся к диапазону 2 и т. Д.).
Ниже мой «код», но он ничего не делает, когда я меняю выбор радиокнопок (я вижу значение в ячейке P1
меняется как положено).
Sub HideShow()
'
' HideShow Macro
' Show only the selection pane assocated to the Design line selection
If Range("P1").Value = 1 Then ‘Decoration Range A
Rows("10:19").Select
Selection.EntireRow.Hidden = False
Rows("20:59").Select
Selection.EntireRow.Hidden = True
ElseIf Range("P1").Value = 2 Then 'Decoration Range B
Rows("10:19").Select
Selection.EntireRow.Hidden = True
Rows("20:29").Select
Selection.EntireRow.Hidden = False
Rows("30:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 3 Then 'Decoration Range C
Rows("10:29").Select
Selection.EntireRow.Hidden = True
Rows("30:39").Select
Selection.EntireRow.Hidden = False
Rows("40:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 4 Then 'Decoration Range D
Rows("10:39").Select
Selection.EntireRow.Hidden = True
Rows("40:49").Select
Selection.EntireRow.Hidden = False
Rows("50:59").Select
Selection.EntireRow.Hidden = False
ElseIf Range("P1").Value = 5 Then 'Decoration Range E
Rows("10:49").Select
Selection.EntireRow.Hidden = True
Rows("50:59").Select
Selection.EntireRow.Hidden = False
End If
End Sub
Я знаю, что мне, вероятно, не нужен окончательный выбор (если это не A, B, C или D, тогда это может быть только E), но я просто вставил его для аккуратности.
Я также попытался со значением ячейки в виде текста, т.е. ElseIf Range("P1").Value = "5" Then...
но и радости нет.
Любое руководство приветствуется.
источник
Ответы:
Если вы хотите, чтобы ваш код запускался при выборе переключателя, вам нужно либо вызвать макрос с помощью переключателя, либо вам нужно, чтобы макрос был приватный sub worksheet_change () работать на изменениях листа.
Сам код работает нормально. Есть лучшие способы сделать это, но в вашем коде нет ничего плохого.
Поместите это в VBA для листа, с которым вы работаете:
Но я бы сделал это так:
источник