Class Module--Event()/RaiseEvent
사용자정의 크래스(오브젝트)도 이벤트프로시져를 만들수 있다
BrainTraining_29회에서 문제로 내었던 과제를
이곳에서는 크래스모듈을 활용해 보도록 하자
특히 아래의 구문의 활용에 대하여 보도록 한다
Public WithEvents oBlankText As MSForms.TextBox
Public Event NumberText()
Public Event FormulaText()
Private Sub oBlankText_Change()
If IsNumeric(oBlankText.Text) Then
RaiseEvent NumberText
Else
RaiseEvent FormulaText
End If
End Sub
위의 사용자정의 이벤트프로시져를 활용하여
최초 숫자를 넣을때는 텍스트박스가 빨강색으로 변하게 하고
수식이 입력될때는 파랑색으로 변하게 해보자
엑셀이 제공하는 오브젝트의 이벤트프로시져를 활용하는것이
자연스러워지고..
더 나아가서 사용자정의 오브젝트(크래스모듈)을 활용할줄 알게 되면
자연스럽게 사용자정의 오브젝트도 이벤트프로시져를 만들어서
사용할수 있을까???
라는 의문점이 생기는것이 순서이고
그런 의문점을 풀어주는 것이
RaiseEvent 명령이다
말 그대로 Event를 일으킨다는 것이다
사용자정의 오브젝트의 내부에 어떤 상황이 벌어지면 선언부에 선언한
Event 이벤트이름()
이벤트가 발생하게 되고..
이 사용자정의 오브젝트를 선언한 곳에서 이 이벤트프로시져를
활용할수 있게 되는것이다
아래의 그림과 같이 사용자정의 오브젝트 oResult 를 선언한 모듈에서
이벤트프로시져를 활용할수 있는 것이다
크래스모듈를 사용하면
자신만의 코딩의 질서있는 구조를 구성할수 있어서 좋고
정보관리가 복잡할때 체계적으로 관리가 되고
나중에 수정을 할때도 쉽게 수정할수 있고
복잡한 코딩이 머리속에 질서있게 자리 잡혀서
놀다가 와서 작업을 해도 덜 헷갈리게 되고..
보통 VBA프로그래머보다 훨 우수해(??) 보이고
오브젝트의 구조를 이리..저리 몰고 다니면
엑셀의 오브젝트의 구조..워드의 구조..파워포인트의 구조..
등등이 쉽게 쉽게 이해되고 활용하는것이 원활해지고
그리고 사용하는 습관이 들면..그냥 좋게 된다!!
위의 크래스모듈 내용이 이해가 안가고 골치만 아프고..
이것을 해??? 말어???
하는 고민이 당연히 생길것이고..(우노도 처음에 그랬으니까..)
에라..집어 치웠다가..그래도 뭔가 좋으니까..쓰라고
만들어 놓은것인데..
또 도전하고..포기하고..도전하고..포기하고..도전하고..
그러다가..탁!!무릅을 치고
별것도 아닌 것을 이렇게 속을 썩었나..!!!!
그러면서 자기의 것이 된다..
ClassModule_02.