PROGRAMMING WORKSHOP

Financial Planning |테이블의 표준화

통합문서도 여러개, 시트로 여러개, 테이블도 여러개가
여기저기에서 튀어 나오게 된다
다양한 테이블..
될수 있는 한 한장의 시트에 하나의 테이블을 표준으로 하는 것이
바람직하다
엑셀의 일이라고 하는 것이 주로 범위..즉 테이블에 접근하는 일이
거의 다라고 할 수도 있을 만큼 중요하다
그렇게 여러개의 테이블을 사용하는데 테이블의 표준을 만들어 놓지 않고
소루션을 만들어 나간다고 하는 것은 무식한 일이다
하나의 테이블에서 얼마나 많은 정보가 발생할까?
테이블의 범위는 어디인가?
테이블의 열머리의 주소는 어디인가?
테이블의 내용은 모두 정상적으로 입력되었는가?
테이블의 열머리의 서식은 어떠한가?
테이블의 숫자서식은 어떠한가?
테이블의 폰트서식은 어떻게 하였는가?
테이블의 범위의 이름은 무엇인가?
테이블중에 병합된 셀은 있는가?
테이블의 행머리도 있는가?(피봇같은 형식인가)
테이블의 정보는 값인가 수식인가
등등 많은 정보를 갖고 있다
우리는 이것을 수시로 확인하고 설정하여야 하는 셈이다
그런데 시트마다 테이블마다 이런 정보가 중구난방이면 어떻게
관리할 수 있겠는가??
이것을 쉽게 관리할수 있는 방법을 강구해야 할 것이다

또한 테이블을 만들어야 할때도 있을 것이고
테이블을 지워야 할때도 있을 것이다
그리고 특정 열을 찾아야 할때도 있을 것이고
행머리와 열머리의 교차되는 값이 어떻게 되어야 하는 경우도 있을 것이고
이런 하나의 프로토타입을 갖고 대량소비를 하게 되는 것이다
이런 시트,저런시트에서 매번 같은 작업을 같은 모듈시트에서
한다면 테이블을 관리하는 것이 시트를 관리하는 모듈시트마다
들어간다면 얼마나 바보같은 짓일까..
바로 이때 모듈화 조금더 더 나가서 개체화가 필요하게 되는 것이다
VBA를 하시는 분들이 가장 껄끄럽게 생각하는 것이 개체화
즉 일반 모듈시트가 아닌 크래스모듈을 사용한다고 하면
지레 겁을 먹는다
하지만 이 시리즈에서 맛보기로 딱 하나의 개체 테이블을 관리하는
개체를 만들어 보기로 하자
그리고 유용하다고 생각되면 다른 소루션에서도 많이 활용하실수 있는
기회들이 되었으면 좋겠다
크래스모듈로 만들기 전에 일반모듈시트로 테이블만 관리하는
모듈을 만들어 본후 이것은 크래스모듈로도 만들어 보도록 한다
일반 모듈시트로 우선 만들자

표준화는 몇가지 모든 테이블이 공통적으로 관련된 원칙들을 정하는 일이다

일반 모듈시트를 하나 삽입하고
이름을 modTable이라고 짓는다
모듈의 선언부에 상수를 몇개 정하도록 하자
장기재무전략이라는 제목에 따라서 과거년도의 정보를 기준으로
미래년도의 추정값을 만들어가는 작업을 위한 테이블이다

' table structure--
Public Const TBL_START_ADDRESS As String="A4"
Public Const TBL_P_YEAR As Integer=2' 과거년도검토 2년
Public Const TBL_F_YEAR As Integer=10' 미래계획년도 10년

' table format-----
Public Const TBL_FONT_NAME As String="맑은 고딕"
Public Const TBL_FONT_SIZE As String=11
Pubiic Const TBL_NUM_FMT_MON As string="###,###"
Public Const TBL_NUM_FMT_PER As String="0.0%"
Public Const TBL_NUM_FMT_DAT As String="yyyy/mm/dd"
Public Const TBL_HEAD_BK_CLR As Integer=6
...
...
...
...
위와 같이 상수로 하면 전체소루션테이블의 폰트사이즈를 12로 하고
싶다면 그냥 위의 상수만 바꿔주면 되는 셈이다
또한 향후 계획년도를 5년만 하자고 한다면 미래년도갯수상수를 5로
바꿔주면 될 것이고..과거년도를 3년치를 하고 싶다면 3으로만 바꿔주면 된다

이 모든 것이 아래와 같은 시트의 테이블을 만들고, 접근하고,수정등을
하기위한 기본정보들인 것이다



위와 같이 많은 보고서나 분석시트등의 기본양식이 되는 테이블을
표준화하여야 소루션의 일관성이 유지되고 상품가치가 있게 되는 셈이다

위와 같은 작업을 위하여 또한 다양한 프로시져가 발생하게 된다

전체의 메인이 되는 양식만들기 프로시져
Sub MakeTable(sShtName As String)

위의 메인을 돕는 부속지원함수들..
양식의 제목을 작성하는프로시져
Private Sub WriteTblTitle(shtX As Worksheet, sTtl As String)
창틀고정을 위한 프로시져
Private Sub SplitTable(shtX As Worksheet)
과거년도의 마지막년도인 현재년도의 열위치를 찾는 함수
Private Function GetThisYearColumn(shtX As Worksheet)
양식의 열머리를 그리는 프로시져
Private Sub CreateFldRow(shtX As Worksheet)
테이블이 그려질 시트를 갖여오고나 새로만드는 프로시져
Private Function GetSheet(sSheetName As String, bCreateNew As Boolean)

위와 같은 내용을 기본으로 모듈시트 modTable을 하나 구성하게
되는 것이다

이렇게 발생하는 자원들은 다른 소루션에 재사용을 할수도 있을 것이다
그러니 잘 챙겨두시는 것이 좋다

혹은 그냥 템프릿을 하나 만들어 놓고 필요할때마다 표준양식을
복사하여 사용해도 될것이나..화일이 지저분해진다

단발적인 강좌화일에서 이야기 하지 못한 것들을
연속성을 갖고 진행하니 중요한 이야기들, 프로그래밍의 원칙이
되는 것들이 많이 화일에 올리게 되니 이 코너는 참 잘 한 짓이다..

***[LOG-IN]***


화일의 내용은 매회 조금씩 실무에 맞게 수정될 것이니..
원칙을 알고 수정을 하여야 하는 것이니 수정된 최근 것만 보면 헷갈리기 쉽다
한회라도 놓치지 마시기 바란다