
У меня есть ячейка (D3) с выпадающим меню из 8 пунктов (все слова). В зависимости от выбранного выпадающего элемента я хочу скрыть все остальные строки без этого конкретного слова в столбце K (11 столбцов сверху от начала).
Мне также нужна опция для отображения всех строк, если в раскрывающемся меню выбран пункт «Все строки».
Есть ли идеи по VBA, как связать значение ячейки выпадающего меню?
Кроме того, как связать код VBA с раскрывающимся меню при его выборе?
Спасибо и я буду признателен за любую помощь.
Этот код выглядит правильно? Sub PhaseTargettoStart()
Dim rMyCell As Range Set rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 If Range("Audit!D3") = "Исходный выбор" Then Rows("6:301").EntireRow.Hidden = False
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
При форматировании раскрывающегося меню вы указываете ячейку, в которой будет храниться результат выбора элемента в меню.
Это называется «ссылка на ячейку» и она всегда будет содержатьчислосоответствует положению выбора пользователя в раскрывающемся списке меню.
Вы можете использовать INDEX(), чтобы получить фактическое значение пункта меню (из списка пунктов меню), иэта страница руководствапоказано, как скрыть/показать строки с помощью VBA.
Я собираюсь помочь вам начать, но этот сайт не является сайтом "напиши мне код". Вам придется потратить время, чтобы научиться писать код на VBA.
Во-первых, вам нужно правильно настроить раскрывающийся список. На рисунке ниже я настроил некоторые данные, похожие на ваши, с помощью раскрывающегося списка (также известного как комбо-бокс).
Здесь я отформатировал элемент управления и определил Диапазон ввода (элементы списка) как 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 элементу управления, воспользуйтесь Интернетом и изучите, как это сделать.
Если у вас возникнут проблемы, задавайте вопросы здесь.