메뉴
해결 엑셀2021윈도우10

특정 셀의 내용에 따라 행/열을 숨기는 매크로 있을까요?

문
12월 25일 조회 3,605
 

R7셀, S7셀이 빈칸일때는 30행 ~ 32행이 자동으로 숨김 상태가 되고

위 두셀이 빈칸이 아닐때는 숨기기 취소인 상태로 만들고 싶은데요, 가능할까요?

밑에는 GPT에 물어봤을때 짜준 코드인데. 이걸 어떻게 실행하는지 모르겠네요

ALT + F11 눌러서 모듈에 복사 붙여넣기 한것만으로는 작동이 안돼더라구요.

 

Private Sub Worksheet_Change(ByVal Target As Range)
Dim targetRange As Range
Set targetRange = Range("R7:S7") ' 대상 범위 지정

On Error Resume Next ' 에러 발생을 무시하고 계속 진행

' 시트 보호 해제
ActiveSheet.Unprotect Password:="YourPassword" ' "YourPassword"에는 실제로 설정한 시트 비밀번호를 입력해야 합니다.

If Not Intersect(Target, targetRange) Is Nothing Then
' R7 또는 S7 셀의 값이 변경되었을 때
If IsEmpty(Range("R7").Value) And IsEmpty(Range("S7").Value) Then
' R7과 S7이 둘 다 빈칸이라면
Rows("30:32").Hidden = True ' 30~32행 숨김
Else
' R7과 S7 중 하나라도 값이 있다면
Rows("30:32").Hidden = False ' 30~32행 보이게 함
End If
End If

' 시트 다시 보호
ActiveSheet.Protect Password:="YourPassword" ' "YourPassword"에는 실제로 설정한 시트 비밀번호를 입력해야 합니다.

On Error GoTo 0 ' 에러 처리를 원래대로 돌려놓음
End Sub

댓글 2

김
김재규 채택된 답변 12월 25일
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range, iCount As Integer
    
    Set rng = Union(Range("R7"), Range("T7"))
    If Intersect(rng, Target) Is Nothing Then Exit Sub

    If VarType(Range("R7")) = vbEmpty And VarType(Range("T7")) = vbEmpty Then
        Rows("30:32").EntireRow.Hidden = True
    Else
        Rows("30:32").EntireRow.Hidden = False
    End If
    
End Sub

 
닉
닉뿡뿡 12월 27일
@김재규 님 저도 필요한 기능이라 적용했는데.. 됩니다. 감사합니다.

질문답변 게시판의 최근 글

스크랩 완료