엑셀 VBA에서 Visible 속성은 특정 워크시트의 표시 여부를 설정하거나 가져오는 기능을 제공합니다.
즉, 시트를 보이거나 숨길 때 사용됩니다.
1. 기본 문법
Sheets("시트이름").Visible = xlSheetVisible ' 시트 보이기
Sheets("시트이름").Visible = xlSheetHidden ' 시트 숨기기
Sheets("시트이름").Visible = xlSheetVeryHidden ' 완전 숨기기
|
- xlSheetVisible → 시트를 보이도록 설정
- xlSheetHidden → 시트를 숨김 (사용자가 숨기기 취소로 다시 표시 가능)
- xlSheetVeryHidden → 시트를 완전히 숨김 (숨기기 취소 옵션에서 보이지 않음)
📌 xlSheetVeryHidden을 사용하면 VBA 코드로만 다시 표시할 수 있음
📌 숨긴 시트는 데이터는 유지되지만 화면에 보이지 않음
2. 특정 시트 숨기기
Sub 특정시트_숨기기()
Sheets("Sheet1").Visible = xlSheetHidden
End Sub
|
📌 "Sheet1"을 숨김 (사용자가 숨기기 취소로 다시 보일 수 있음)
3. 특정 시트 완전히 숨기기
Sub 특정시트_완전숨기기()
Sheets("Sheet1").Visible = xlSheetVeryHidden
End Sub
|
📌 "Sheet1"을 완전히 숨김 (숨기기 취소에서도 보이지 않음)
4. 숨겨진 시트 다시 표시
Sub 숨긴시트_다시보이기()
Sheets("Sheet1").Visible = xlSheetVisible
End Sub
|
📌 숨겨진 "Sheet1"을 다시 보이게 설정
5. 모든 숨겨진 시트 표시
Sub 모든숨긴시트_표시()
Dim ws As Worksheet
For Each ws In Sheets
ws.Visible = xlSheetVisible
Next ws
End Sub
|
📌 워크북 내 모든 숨겨진 시트를 다시 보이도록 설정
6. 모든 시트 숨기기
Sub 모든시트_숨기기()
Dim ws As Worksheet
For Each ws In Sheets
If ws.Name <> ActiveSheet.Name Then
ws.Visible = xlSheetHidden
End If
Next ws
End Sub
|
📌 현재 활성화된 시트를 제외하고 모든 시트를 숨김
7. 모든 시트를 완전히 숨기기
Sub 모든시트_완전숨기기()
Dim ws As Worksheet
For Each ws In Sheets
If ws.Name <> ActiveSheet.Name Then
ws.Visible = xlSheetVeryHidden
End If
Next ws
End Sub
|
📌 현재 시트를 제외한 모든 시트를 완전히 숨김 (숨기기 취소에서도 안 보임)
8. 워크북에 숨겨진 시트 개수 출력
Sub 숨겨진시트_개수출력()
Dim ws As Worksheet, count As Integer
count = 0
For Each ws In Sheets
If ws.Visible <> xlSheetVisible Then count = count + 1
Next ws
MsgBox "숨겨진 시트 개수: " & count
End Sub
|
📌 현재 워크북에서 숨겨진 시트의 개수를 메시지 박스로 출력
9. 특정 단어가 포함된 시트 숨기기
Sub 특정단어포함_시트숨기기()
Dim ws As Worksheet
For Each ws In Sheets
If InStr(ws.Name, "보고서") > 0 Then
ws.Visible = xlSheetHidden
End If
Next ws
End Sub
|
📌 "보고서"라는 단어가 포함된 시트만 숨김
10. 사용자가 선택한 시트 숨기기 (InputBox 활용)
Sub 사용자입력_시트숨기기()
Dim 시트이름 As String
시트이름 = InputBox("숨길 시트의 이름을 입력하세요:", "시트 숨기기")
If 시트이름 <> "" Then
On Error Resume Next
Sheets(시트이름).Visible = xlSheetHidden
If Err.Number <> 0 Then
MsgBox "해당 시트가 존재하지 않습니다.", vbExclamation
End If
On Error GoTo 0
Else
MsgBox "시트 이름을 입력하지 않았습니다.", vbExclamation
End If
End Sub
|
📌 사용자가 입력한 시트 이름을 숨김, 존재하지 않는 경우 오류 메시지 출력
11. 특정 시트가 숨겨져 있는지 확인
Sub 특정시트_숨김확인()
If Sheets("Sheet1").Visible = xlSheetHidden Then
MsgBox "Sheet1은 숨겨져 있습니다."
ElseIf Sheets("Sheet1").Visible = xlSheetVeryHidden Then
MsgBox "Sheet1은 완전히 숨겨져 있습니다."
Else
MsgBox "Sheet1은 보이는 상태입니다."
End If
End Sub
|
📌 "Sheet1"의 가시성 상태를 확인하여 메시지 출력
12. 워크북을 닫을 때 특정 시트만 보이게 설정
Sub 워크북닫기_특정시트만보이기()
Dim ws As Worksheet
For Each ws In Sheets
If ws.Name = "메인시트" Then
ws.Visible = xlSheetVisible
Else
ws.Visible = xlSheetHidden
End If
Next ws
End Sub
|
📌 워크북을 닫기 전에 "메인시트"만 보이게 설정하고 나머지는 숨김
13. 워크북 열릴 때 모든 시트 보이게 설정
Private Sub Workbook_Open()
Dim ws As Worksheet
For Each ws In Sheets
ws.Visible = xlSheetVisible
Next ws
End Sub
|
📌 워크북을 열 때 모든 숨겨진 시트를 보이도록 설정
📌 이 코드는 ThisWorkbook 모듈에서 작성해야 함
📝 정리
기능
|
VBA 코드
|
특정 시트 숨기기
|
Sheets("Sheet1").Visible = xlSheetHidden
|
특정 시트 완전히 숨기기
|
Sheets("Sheet1").Visible = xlSheetVeryHidden
|
숨겨진 시트 다시 표시
|
Sheets("Sheet1").Visible = xlSheetVisible
|
모든 숨겨진 시트 표시
|
For Each ws In Sheets: ws.Visible = xlSheetVisible: Next ws
|
모든 시트 숨기기 (현재 시트 제외)
|
For Each ws In Sheets: If ws.Name <> ActiveSheet.Name Then ws.Visible = xlSheetHidden: Next ws
|
워크북 내 숨겨진 시트 개수 출력
|
If ws.Visible <> xlSheetVisible Then count = count + 1
|
특정 단어 포함된 시트 숨기기
|
If InStr(ws.Name, "보고서") > 0 Then ws.Visible = xlSheetHidden
|
사용자가 입력한 시트 숨기기
|
Sheets(InputBox("숨길 시트 이름?")).Visible = xlSheetHidden
|
특정 시트가 숨겨져 있는지 확인
|
If Sheets("Sheet1").Visible = xlSheetHidden Then MsgBox "숨김 상태"
|
워크북 닫을 때 특정 시트만 보이기
|
If ws.Name = "메인시트" Then ws.Visible = xlSheetVisible Else ws.Visible = xlSheetHidden
|
🔥 VBA의 Visible 속성을 활용하면 시트의 가시성을 자유롭게 조절할 수 있습니다! 🚀