풀다운 목록에 따라 행 숨기기 및 숨기기 해제

풀다운 목록에 따라 행 숨기기 및 숨기기 해제

8개 항목(모든 단어)으로 구성된 풀다운 메뉴가 있는 셀(D3)이 있습니다. 선택한 풀다운 항목에 따라 K열(처음부터 11열)에 특정 단어가 없는 다른 모든 행을 숨기고 싶습니다.

풀다운 메뉴에서 "모든 행"을 선택한 경우 모든 행을 표시하는 옵션도 필요합니다.

풀다운 메뉴 셀 값과 관련된 VBA에 대한 아이디어가 있습니까?

또한 선택 시 VBA 코드를 풀다운 메뉴에 어떻게 연결합니까?

감사합니다. 도움을 주셔서 감사합니다.

이 코드가 올바른 것 같나요? 하위 단계TargettoStart()

Dim rMyCell As Range Set rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 If Range("Audit!D3") = "Source Selection" Then Rows("6:301").EntireRow.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

드롭다운 메뉴의 형식을 지정할 때 메뉴에서 선택한 항목의 결과를 저장할 셀을 지정합니다.

이를 "셀 링크"라고 하며 항상 다음을 포함합니다.숫자드롭다운 메뉴 목록에서 사용자가 선택한 위치와 동일합니다.

INDEX()를 사용하여 메뉴 항목 목록에서 메뉴 항목의 실제 값을 가져올 수 있습니다.이 튜토리얼 페이지VBA를 사용하여 행을 숨기거나 숨기기 해제하는 방법을 보여줍니다.

이에 대해 시작하도록 하겠습니다. 하지만 이 사이트는 "나를 위한 코드 작성 사이트"가 아닙니다. VBA로 코딩하는 방법을 배우려면 시간을 투자해야 합니다.

먼저 드롭다운 목록을 올바르게 설정해야 합니다. 아래 그림에서는 드롭다운 목록(콤보 상자라고도 함)을 사용하여 귀하와 유사한 일부 데이터를 설정했습니다.

여기에 이미지 설명을 입력하세요

여기에서는 컨트롤의 형식을 지정하고 입력 범위(목록 항목)를 A2:A8로, 셀 링크를 B2로 정의했습니다. 드롭다운에서 "모두 표시"를 선택하면 "모두 표시"가 목록의 7번째 항목이기 때문에 셀 B2에 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 모듈을 컨트롤에 할당하는 방법에 대해 자세히 배워야 한다면 인터넷을 사용하여 해당 작업을 수행하는 방법을 조사하십시오.

문제가 발생하면 여기에 질문하세요.

관련 정보