728x90
엑셀 VBA 기본기능 정리 - 시트 관련 속성 및 메서드
- 추가하기 : add
- .add after=ActiveSheet, Count:=3 : 액티브 시트 뒤에 3개의 시트 추가
- .add after=sheets(sheets.Count), Count:=3 : 가장 뒤편에 3개의 시트 추가
- .add.name=i&"월" : (For문 사용시 주로 사용) 생성과 동시에 이름 변경※ 시트의 이름 등을 호출하기 위한 시트번호는 '시트의 순서'이다. 예를들어 4번째 시트는 sheets(4)이다.
- 삭제하기 : delete
- 경고창이 뜨므로, 시행 전ㆍ후에 각각 Application.DisplayAlert = False / True를 입력하여 한시적 으로 경고창을 제거해야 한다.
- 주로 메인시트.Activate 후, 이터레이터와 무관하게 액티브시트의 인덱스+N(상수)만큼 떨어진 시트를 삭제하는 구조로 코딩한다(1시트를 삭제하면 1시트가 밀려들어오기 때문)
- 활용예시
Dim it As Long
Appliction.DisplayAlerts = False
Sheets(1).Activate
For it = 1 To 12
Sheets(ActiveSheet.Index + 2).Delete
Next
Appliction.DisplayAlerts = True
- 숨기기/보이기 : visible
- 여러개의 시트를 조작하는 경우 동적배열 변수를 선언한 후, For문으로 조작하고 'Sheet(변수명).Visible = True'의 형태로 조작한다.
- 활용예시 – 특정 시트 제외한 모든 시트 일괄 숨기기
Dim sh As Worksheet
Dim s() '숨길 시트를 저장할 배열 선언
Dim i As Long
For Each sh In ThisWorkbook.Worksheets
If sh.Name = "main" Then 'main시트 및 특정 명칭의 시트는 숨기기에서 제외
ElseIf sh.Name = "시트명" Then
Else
ReDim Preserve s(i) '나머지 시트는 모두 배열 s에 저장
s(i) = sh.Name
i = i + 1
End If
Next
Sheets(s).Visible = False '동적배열의 인덱스()를 표기하지 않음에 주의
- 복사/이동하기 : copy/move
- 속성으로 인수로 after/before를 취하며, 둘 중 하나만 사용가능하다. 또한, 인수를 취하지 않으면 새창을 이동한다.
- 해당시트.Sheets.Count를 통해 가장 마지막장에 시트를 추가할 수 있다.
- 활용예시 : 특정파일의 시트 모두 불러오기
Dim tempFile As Workbook '열었다가 복사/이동만 하고 닫을 임시파일 워크북 개체
Dim tempFileName As String
Dim tempFileSh '순회용 변수
Dim i As Long '순회용 변수
Dim thisWb As Workbook '통합의 주체가 되는 워크북
Set thisWb = ActiveWorkbook
tempFileName = Application.GetOpenFilename(filefilter:="Excel Files(*.xls*),*.xls*")
If tempFileName <> "False" Then '파일명을 받되, 파일명이 False일 경우 함수 종료
Else: Exit Sub
End If
Set tempFile = Workbooks.Open(tempFileName) '파일 열기
tempFileSh = tempFile.Sheets.Count '반복문을 위하여 임시파일의 시트 개수 파악
For i = 1 To tempFileSh '해당 파일 내 모든 시트를 갖고 오기 위한 반복문 시작
tempFile.Sheets(i).Copy after:=thisWb.Sheets(thisWb.Sheets.Count) '가장 마지막 순서로 시트 이동
Next
On Error Resume Next
tempFile.Close savechanges:=xlNo '열었던 파일은 저장하지 않고 닫음
On Error GoTo 0
- 특정 명칭의 시트 존재여부 확인
dim uSh as WorkSheet
For Each uSh in ActiveWorkbook.Worksheets
If uSh.Name = "찾고자하는_워크시트명“ then
MsgBox "이미 해당시트가 존재함”
exit sub '중복값이 존재함에 따라 프로시저 종료
Next '중복값이 없었다면 수행할 작업은 이후에 기재
반응형
'컴퓨터 & 코딩 공부 > 엑셀 & VBA' 카테고리의 다른 글
엑셀 VBA 기본기능 정리 - VBA를 이용한 자동필터, 고급필터 (0) | 2023.07.09 |
---|---|
엑셀 VBA 기본기능 정리 - Cells/Range 관련 속성 및 메서드 (0) | 2023.07.06 |
엑셀 VBA 기본기능 정리 - 정규표현식 활용 (0) | 2023.07.04 |
엑셀 VBA 기본기능 정리 - 선택하기/범위조작(2) (0) | 2023.07.03 |
엑셀 VBA 기본기능 정리 - 선택하기/범위조작(1) (0) | 2023.07.03 |