이번에는 새로운 Sheet 를 생성하는 코드를 작성해 보겠습니다.
일단 Excel file 내의 sheet 들의 맨 마지막 위치에 새로운 sheet 를 생성해서 New_Sheet 라고 이름을 붙이겠습니다.
다만 이 New_Sheet 라는 sheet 가 있으면 새로운 sheet를 생성하지 않고 이 New_Sheet 가 있다는 Message Box를 보이겠습니다.
코드는 아래와 같습니다.
Sub CreateNewSheet()
'
' CreateNewSheet Macro
'
' Keyboard Shortcut: Ctrl+Shift+A
'
Dim sh As Worksheet, flg As Boolean
For Each sh In Worksheets
If sh.Name Like "New_Sheet" Then flg = True: Exit For
Next
If flg = True Then
MsgBox "New_Sheet Exist!"
Else
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "New_Sheet"
End If
End Sub
이 함수의 이름은 CreateNewSheet() 로 했습니다.
그다음두 줄은 주석입니다.
이 매크로를 생성할 때 단축키는 Ctrl+Shift+A 로 만들었습니다.
이것은 지난 글에서 다룬 Macro 만들기 할 때 단축키를 넣은 것입니다.
아직 코드 내에서 단축키를 만드는 것은 모릅니다.
첫째 줄에 나오는 DIM 은 변수에 공간을 할당하는 statement 입니다.
Worksheet 형태인 sh 라는 변수를 생성했습니다.
그리고 Boolean type 의 flg라는 변수도 만들었구요.
그리고 for loop문이 나옵니다.
Worksheets 내에 있는 Worksheets들을 차례로 불러내서 어떤 일을 할 겁니다.
이때 불러 낼 때는 해당 Worksheet를 sh라는 변수에 담을 거구요.
이것을 하려고 첫째줄에 sh라는 변수 공간을 만들어 둔 겁니다.
For 문 안을 보면 sh에 담겨있는 Worksheets의 이름을 가져와서 "New_Sheet" 라는 문자와 비교를 하네요.
이 문자가 포함돼 있는 sheet 이름이 있으면 flg 라는 Boolean type 변수에 True를 할당합니다.
그리고 For 문을 Exit 하구요.
만약에 없으면 Next 가 실행되서 그 다음 Worksheet를 살펴봅니다.
이 엑셀 파일에 있는 Worksheet 들을 다 돌았으면 For 문에서 빠져 나오게 되겠죠.
이 For Loop 문의 신택스는 아래와 같습니다.
For counter [ As datatype ] = start To end [ Step step ] [ statements ] [ Continue For ] [ statements ] [ Exit For ] [ statements ] Next [ counter ]
자세한 것은 링크를 따라가서 보시구요.
보니까 For Each Loop는 좀 다르군요.
신택스는 아래와 같습니다.
For Each element [ As datatype ] In group [ statements ] [ Continue For ] [ statements ] [ Exit For ] [ statements ] Next [ element ]
이것도 자세한 것은 링크를 따라가서 보세요.
이제 For Each Loop 에서 flg 에 대한 값이 할당이 됐습니다.
그 다음 if 문에서는 이 flg 가 True 일 경우에는 "New_Sheet Exist!" 라는 글자가 있는 MsgBox를 띄우고 flg가 True가 아닐 경우에는 그 다음일을 합니다.
우선 현재엑셀 파일에서 Worksheet이 맨 마지막으로 가구요.
그 다음에 맨 마지막 Sheet 다음에 새로운 Sheet를 만듭니다.
그리고 그 맨 마지막에 있을 Sheet의 이름을 "New_Sheet"라고 지어 줍니다.
이 If 문의 신택스는 이렇습니다.
' Multiple-line syntax: If condition [ Then ] [ statements ] [ ElseIf elseifcondition [ Then ] [ elseifstatements ] ] [ Else [ elsestatements ] ] End If ' Single-line syntax: If condition Then [ statements ] [ Else [ elsestatements ] ]
이렇게 하면 처음에 원했던 대로 엑셀 파일의 맨 마지막 Sheet 에 Work_Sheet 라는 새로운 Sheet를 만듭니다.
기존에 이 Sheet가 있으면 안 만들구요.
제가 작업한 파일을 올려 놓으니까 필요하신 분들은 참조하세요.
한가지 Tip 으로 말씀 드릴것은 Macro를 쓰려면 엑셀파일을 Macro가 가능한 버전으로 Save As를 해야 합니다.
그러면 저렇게 확장자가 xlsm 이 됩니다.
그렇게 하지 않으면 기껏 작업한것을 모두 날릴 수 있습니다.
'etc. > Excel Programming' 카테고리의 다른 글
[VBA] Userform 만들기 (0) | 2014.02.21 |
---|---|
[VBA] Developer 메뉴 보이게 하기 (0) | 2014.02.21 |
[VBA] inputBox 살펴보기 (0) | 2014.02.20 |
[VBA] Range Return 하기 (2) | 2014.02.12 |
[VBA] 엑셀과 Teradata 연동하기 (0) | 2014.02.07 |
[VBA] 두 Sheet안의 데이터들 비교하기 (4) | 2014.02.06 |
[VBA] 다른 함수 호출하기/파라미터 전달하기 (2) | 2014.02.05 |
VBA (Excel) - 필터링 한 후 합계 구하기 (0) | 2014.01.07 |
VBA (Excel) - 특정 Column 의 합계 구하기 (0) | 2014.01.06 |
EXCEL Programming - Macro 만들기와 Visual Basic Editor 보기 (4) | 2013.12.26 |