Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

PivotTable...

Using Class Module

그동안 작성했던것을 한장의 크래스모듈에 몽땅 옮기면서
크래스모듈로 옮기기 위한 약간의 수정작업을 한다
일반워크시트의 크래스모듈과 일반 모듈시트의 내용을
한장의 크래스모듈로 옮기고 모든 엔진을 이속에
캡슐속에 담듯이 담아서 사용하는것(Encapsulation)도
크래스모듈을 사용하는 이유중의 하나이다
이렇게 한후 일반모듈시트에 아래의 몇줄만 사용자가
입력하여 사용하게 한다면 편리할것이다
크래스모듈속에 어떤 복잡한것이 있던 알필요가 없다
사용자정의 오브젝트(User Defined Object)를 만들어서
사용하는 것이다

Public oPVT As clsPivot Sub CreatePivot_New() Set oPVT = New clsPivot Set oPVT.DataSheet = DataSheet Set oPVT.PivotStartCell = PivotSheet.Range("A3") oPVT.CreatePivot End Sub

크래스모듈로 오브젝트를 생성하고
해당오브젝트에 사용될 데이타시트는 어떤것이고
피봇테이블이 그려질곳은 어떤 시트의 어떤셀을 기준으로
그려준다
라는 정보만 전달하면 알아서 그려주고
그려진 피봇테이블상의 명령들을 하면 크래스모듈내에서
알아서 처리하게 된다



그림과 같이 데이타시트의 열을 추가했다..삭제했다
하면서 실행해보시기 바란다
주어진 데이타테이블의 조건에 맞게 휠드를
표현할것이다
특히 날자정보가 있을때..숫자정보가 있을때등의
관계를 실행해보면 관찰하시기 바란다

특히 워크시트의 이벤트프로시져를 어떻게 크래스모듈에서
관리하게 할것인가??
또한 워크시트상의 체크박스같은 콘트롤의 이벤트프로시져는
어떻게 크래스모듈내에서 관리할것인가??
에 대하여 연구하게 될것이다
아래와 같은 구문이 각각의 오브젝트의 이벤트를
크래스모듈내에서 관리하기 위한 절차이다

Private WithEvents oPTSheet As Worksheet Private WithEvents chkDay As MSForms.CheckBox Private WithEvents chkMonth As MSForms.CheckBox Private WithEvents chkQuarter As MSForms.CheckBox Private WithEvents chkYear As MSForms.CheckBox Private Sub Class_Initialize() Set chkDay = PivotSheet.OLEObjects("chkDay").Object Set chkMonth = PivotSheet.OLEObjects("chkMonth").Object Set chkQuarter = PivotSheet.OLEObjects("chkQuarter").Object Set chkYear = PivotSheet.OLEObjects("chkYear").Object End Sub

다음 시간에 내용을 좀더 강화시켜보도록 하자..
피봇테이블이 끝나야 좀더 재미있는것의 진도를 나갈텐데..
바쁘다!!




PivotTable_009.