-1

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

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

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

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

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

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

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

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

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

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

Вы можете использовать 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 для элемента управления, то воспользуйтесь Интернетом и изучите, как это сделать.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .