반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형

이번에는 새로운 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가 있으면 안 만들구요.


ForTesting.xlsm


제가 작업한 파일을 올려 놓으니까 필요하신 분들은 참조하세요.


한가지 Tip 으로 말씀 드릴것은 Macro를 쓰려면 엑셀파일을 Macro가 가능한 버전으로 Save As를 해야 합니다.

그러면 저렇게 확장자가 xlsm 이 됩니다.

그렇게 하지 않으면 기껏 작업한것을 모두 날릴 수 있습니다.


반응형


반응형

내일부터 이곳 미네아폴리스는 강추위에 들어갑니다.

제가 사는 곳은 미네아폴리스 바로 옆에 붙어있는 Eden Prairie 라는 곳입니다.


월요일부터 완전 강추위에 들어가죠?

이거 섭씨가 아니라 화씨예요.

이걸 섭씨로 바꾸면 아래 온도예요.



너무 추워져서 오늘(토) 마켓 다니면서 장 좀 봤거든요.

아침 보다 낮이 될 수록 오히려 기온이 더 내려가요.

장 볼 때는 영하 10도가 넘었는데. 너무 따뜻하더라구요.


내일은 무려 영하 33도라니....

월요일엔 하루중 가장 따뜻할 때가 영하 26도예요.


급기야 회사에서는 월요일 너무 강추위가 예상되니까 출근하지 말고 집에서 일하라고 메일을 보냈더라구요.





로드 아일랜드에 있을 때 너무 눈이 많이 내려서 working from home 할 때가 종종 있었는데...

너무 추워서 재택근무 하라고 하는 건 처음이예요.


강원도 출신이라 어렸을 때도 영하 20도 넘는 경험이 있지만...

영하 30도가 넘는다니... 그리고 낮 최고 온도가 영하 26도이고...


어떤 추위인지 궁금하네요.

내일 제일 추울 때 한번 나가 봐야겠어요.




반응형

Happy New Year 2014

2014. 1. 2. 08:45 | Posted by 솔웅


반응형

Happy New Year 2014



회사에서 온 신년 연하장 (이메일) 입니다.


영어 메일에 써먹을 좋은 표현들이 많이 있네요.


반응형