다양한 표준 옵션에서 장식 선택을 지정하기 위해 스프레드 시트를 만들었습니다.
5 개의 개별 범위가 있으므로 이것이 첫 번째 선택이고 각 범위 내에 추가 선택이 있습니다.
그래서 시트의 시작 부분에서 ‘프레임’과 5 개의 ‘라디오 버튼’을 사용 했으며이 선택 사항을 cell에 연결했습니다 P1
.
따라서이 선택을하면 다양한 행을 숨기고 첫 번째 선택과 관련된 선택 (범위 1과 관련된 10-19 행, 범위 2와 관련된 20-29 행) 만 표시하려고합니다.
아래는 ‘코드’이지만 라디오 버튼 선택을 변경할 때 아무것도하지 않습니다 ( 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...
했지만 기쁨도 없었습니다.
모든 지침에 감사드립니다.
답변
코드를 단일 선택 단추로 실행하려면 단일 선택 단추를 사용하여 매크로를 호출하거나 워크 시트 변경시 매크로를 개인용 하위 워크 시트 _change () 로 실행해야합니다.
코드 자체는 잘 작동합니다. 더 좋은 방법이 있지만 코드에는 아무런 문제가 없습니다.
작업중 인 시트의 VBA에 이것을 넣으십시오.
Private Sub worksheet_change(ByVal Target As Range)
'
' HideShow Macro
' Show only the selection pane assocated to the Design line selection
If Not Intersect(Target, Cells(1, 16)) Is Nothing Then
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 If
End Sub
그러나 나는 이렇게 할 것입니다 :
Private Sub worksheet_change(ByVal Target As Range)
'
' HideShow Macro
' Show only the selection pane assocated to the Design line selection
If Not Intersect(Target, Range("p1")) Is Nothing Then
On Error Resume Next
ActiveSheet.Cells.EntireRow.Hidden = False
If Range("P1") = 1 Then 'Decoration Range A
Rows("20:59").Hidden = True
ElseIf Range("P1") = 2 Then 'Decoration Range B
Rows("10:19").Hidden = True
ElseIf Range("P1") = 3 Then 'Decoration Range C
Rows("10:29").Hidden = True
ElseIf Range("P1") = 4 Then 'Decoration Range D
Rows("10:39").Hidden = True
ElseIf Range("P1") = 5 Then 'Decoration Range E
Rows("10:49").Hidden = True
End If
End If
End Sub