Excel & VBA---Brain Training
이제 WorkBook오브젝트를 여러개 갖고 있는 WorkBook오브젝트를
살펴보자
처음부터 주욱 Range오브젝트에서 WorkSheet오브젝트로..
또 그 위로 WorkBook오브젝트로 간다
WorkBook오브젝트라는 이름도 마음에 들지 않는가??
무언가를 하는..일을 하는 책..좋잖아!!
언놈이 못된짓만 하다가 죽어서 지옥에 갔을 것이라고 생각하고
눈을 떠보니 지상낙원이란다..
이런 그렇게 게으르고 못된짓을 많이 했는데 이런 천국에 오다니..
그러고 몇날 몇일을 잘 먹고 잘 놀고 지내다 보니..
여엉 답답하기 그지 없다
그래서 염라대왕에게 물어본다..
심심해..뭐 재미있는 것 없나??
염라대왕이 말하기를 쨔샤..여기기 지옥이야..
지옥에서는 할일이 하나도 없는 거야..
할 일이 없는 것은 지옥이다
그러니..WorkBook 좋잖아!!!
그런데 이것을 통합문서라고 괴이하게 번역해 놓고 잘 사용한다..
통합문서..통합문서..그럼 Total Documents.....consolidated Document???
이상한 용어들을 만들어서 이놈이 그놈이고 그놈이 저놈인것을
이놈은 무엇이고..저놈은 무엇인가..라고 헷갈리게 만드는 것이 번역이다
아무튼 VBA를 하시려면 그냥 Workbook!!이라고 생각하는 것이
편하겠지!!!
통합문서..Workbook오브젝트로 옮기면서
아주 유용한 영어단어 하나 알고 가자..
ThisWorkBook 이라는 단어..
말그대로 This WorkBook이다..
이 통합문서..!!!!
여러분이 작성한 코드가 들어있는 통합문서는 ThisWorkBook으로 하면
다른 통합문서들과 구별이 되기 쉽다
초보님들은 뭔소리야..???하겠지만
좀 코딩을 한다고 하는 분들의 에러가 퍽퍽나는 원인중의 하나는
여러통합문서를 열어 놓고 작업할때..
어떤 통합문서의 어떤 시트를 처리할것인지 불분명하면
엑셀은 에러를 내게 되어있다
엑셀뿐만이 아니라..모든 현대의 프로그래밍은 접근을 잘못하면 에러다!!!
현재 작업중의 시트가 이름이 Sheet3이라고 되어있고 그 시트의 C3에
값을 넣는다고 하면
ThisWorkBook.Worksheets("Sheet3").Range("C3").Value=3
이라고 하면 된다
물론 현재 활성화된 시트가 공교롭게...마침...Sheet3이라고 한다면
그냥
Range("C3")=3
이라고 해도 된다
Range("C3")=3
은 현재 활성화(Active)된 시트를 찾아서 작업을 하게 되니까..
그래서..
길동이 녀석이 하면 잘되던데 ..내가 하면 에러가 나요??!@#
라는 소리를 하는 것이다
마침 길동이가 할때는 Sheet3가 활성화..열려 있는 상태였던 것이다
Range("C3")=3이라고 할때
마침 sheet1이 활성화되었다면 Sheet1의 C3셀에 작업을 하게 될것이고
마친 sheet2가 활성화되었다면 Sheet2의 C3셀에 작업을 하게 되는 것이니까..
의도는 Sheet2의 Range("C3")에 작업을 하려고 하였는데
Sheet3가 활성화된 상태였다면 Sheet3의 Range("C3")에 있던 값은 개떡이 되버린다
그리고 엑셀때문에 중요한 정보를 날렸다..!!!고 징징되어도 헛일이다
엑셀은 하나도 잘못이 없다
이런 것을 모르고 일을 한 꺽정이의 잘못이지!!!
너무 지루하게 오래 왔다
이제 이 씨리즈의 마지막으로
통합문서를 10개를 만들면서
각 통합문서에 26장의 시트를 만들면서
한장..한장의 시트에 처음문제에 나왔던 셀들에 값을 주고
조건을 따져서 서식을 하는 것을
해보도록 하자
그리고 각 통합문서는 현재 코드가 있는 통합문서와 같은 경로에 저장이되도록 한다
이때 만들면서 각 통합문서의 각시트의 숫자를 빨강색..파랑색..노랑색별로
합계를 내어 코드가 실행되는 통합문서..즉 ThisWorkBook에 보고서가
나타나게 하고
또한 해당 셀을 더블크릭하면 해당 통합문서가 열리게 한다
그리고 버튼을 하나 달어서 만들었던 모든 통합문서를 삭제하는 것도
추가하기로 한다
한마디로 VBA프로그래밍 기본골격의 종합셋트가 될 것이다
그리고 다음 씨리즈로 또 넘어가기로 하자..우노도 지루하니까!!
이 씨리즈 하나만 충실히 직접 해보면서
진행하셨다면 대강의 컨셉은 잘 잡혔을 것이다
BrainTraining_065_11.