Скрыть и показать строки в зависимости от выпадающего списка

845
Opie

У меня есть ячейка (D3) с выпадающим меню из 8 пунктов (все слова). В зависимости от выбранного выпадающего элемента, я хочу скрыть все остальные строки без этого конкретного слова в столбце K (11 столбцов с начала).

Мне также нужна опция, чтобы показать все строки, если «Все строки», если это выбрано из выпадающего меню.

Любые идеи на VBA, чтобы связать со значением ячейки выпадающего меню?

Кроме того, как связать код VBA с выпадающим меню при выборе?

Спасибо, и я ценю любую помощь.

Этот код выглядит правильно? Sub PhaseTargettoStart ()

Dim rMyCell в качестве установленного диапазона rMyCell = Range ("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 Если Range ("Audit! D3") = "Выбор источника", то строки ("6: 301"). CompleteRow.Hidden = Ложь

Else If Range("Audit!D3") = "Source Selection + 4 weeks" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "Step 5 + 8 weeks" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "TKO" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "OTOP" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "VP" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "Process Audit" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "PDR" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "PS" Then Rows("6:301").EntireRow.Hidden = False  Else If Range("Audit!D3") = "Show All" Then Rows("6:301").EntireRow.Hidden = True  End If  End Sub 
-1

1 ответ на вопрос

0
Bandersnatch

При форматировании выпадающего меню вы указываете ячейку для хранения результата элемента, который был выбран в меню.

Это называется «ссылка на ячейку» и всегда будет содержать число, равное позиции, выбранной пользователем в раскрывающемся списке меню.

Вы можете использовать INDEX (), чтобы получить фактическое значение пункта меню (из списка пунктов меню), и на этой странице учебника показано, как скрыть / показать строки с помощью VBA.

Я собираюсь начать с этого, но этот сайт не является «кодом для меня». Вы должны потратить время, чтобы научиться кодировать в VBA.

Во-первых, вы должны правильно настроить выпадающий список. На рисунке ниже я настроил некоторые данные, аналогичные вашим, с помощью раскрывающегося списка (также известного как поле со списком).

enter image description here

Здесь я отформатировал элемент управления и определил диапазон ввода (элементы списка) как A2: A8, а ссылку на ячейку - как B2. Когда я выбираю «Показать все» из выпадающего списка, ячейка B2 показывает 7, потому что «Показать все» является 7-м пунктом в списке.

Теперь вы должны создать аналогичный выпадающий список и назначить ему этот макрос:

Sub ShowHideRows() 'Set up variables Dim ResultText As String  'Initialize variables 'If choice is "Show All", set ResultText to ABCD, a value that won't be found 'Otherwise, get the text from the list If Range("B2") = 7 Then ResultText = "ABCD" Else ResultText = Application.WorksheetFunction.Index(Range("A2:A7"), Range("B2")) End If  MsgBox (ResultText)  End Sub 

Если вы все делаете правильно, то всякий раз, когда вы выбираете элемент из списка, вы должны увидеть сообщение, отображающее выбранный вами элемент списка.

Если вам нужно больше узнать о том, как написать и отладить VBA или как назначить модуль VBA для элемента управления, то воспользуйтесь Интернетом и изучите, как это сделать.

Задайте вопросы здесь, если у вас возникнут проблемы.

Этот код выглядит правильно? Opie 7 лет назад 0
Есть несколько вещей не так здесь. Вы должны сделать это с помощью цикла, а не группы вложенных операторов If ... Then. И ваша ссылка на ячейку не может быть ячейкой, в которой находится ваш Dropbox. Во-первых, отформатируйте ваш Dropbox, нажав на него CTRL и выбрав «Управление форматами ...». В этом диалоговом окне укажите ячейку для хранения вывода вашего Dropbox. Предположим, вы выбрали ссылку на ячейку в A1, а список пунктов меню - в B1: B10. Больше приходит ... Bandersnatch 7 лет назад 0

Похожие вопросы