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

WorkBook_5|UserName|CodeName|WorkBook_BeforeClose|
|WorkBook_Open|Now()|

스스로 알아서 어떤 순간(Event)에 작성된 코드를 실행하기

CodeName속성이 Sheet1이라는 워크시트의
A2셀에 날자를 나타내는 수식을 항상 유지하고 싶다고 할때
사용자가 지우던 말던 항상 유지하도록 할수 있다
저장하는 순간,혹은 화일을 여는 순간 수식을 계속 입력하여
주면 될것이다
WorkBook오브젝트가 제공하는 이벤트프로시져의 활용이 적격이다
WorkBook오브젝트의 이벤트프로시져의 작성요령은 아래의 그림의
순서대로 하면 된다



아래와 같은 프로시져블록이 내용은 없이 작성된다

Private Sub Workbook_BeforeClose(Cancel As Boolean)


End Sub

이곳에 무엇이던지 하고 싶은 내용을 작성하면 된다
그러면 말 그대로 BeforeClose(닫히기 전에..)적성된 코드가 실행되는것이다
예를 들어서 닫히기 전에 메시지 박스를 띄우고 싶다면

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    MsgBox Application.UserName & " 님 수고하셨습니다"
End Sub

Application.UserName은 엑셀사용자의 이름을 얻어내고 문자열이 합쳐져서
"XX님 수고하셨습니다"라는 메시지가 나타날것이다
A2셀에 항상 오늘날자를 나타내는 수식을 나타나게 하고 싶다면
닫을때마다 저장하겠느냐는 메시지가 귀찮다면 BeforeClose이벤트보다는
Open이벤트프로시져가 편리하겠다
아래의 그림과 같이

화일사용기록시트(Log Sheet)를 만들기

예를 들어서 화일을 열었을때의 시간과
화일을 닫았을때의 시간을 기록부에 기록을 할 필요가 있을수도 있을것이다
물론 열었을때는 Open이벤트, 닫을때는 BeforeClose이벤트를 활용하면 될것이다
워크시트에 기록을 나타날때는 Range오브젝트의 속성들을 사용하고



아래와 같은 Flow로 화일을 만들어 보자



Write Work Log With Using WorkBook Event Procedure