엑사남님 강의중 9강부터 14강에 이벤트에 관한 강의가 올라와 있다. 이 이 강좌들을 보면 이벤트에 대한 감이 좀 잡히게 될 것이다.
매크로와 이벤트의 차이는 매크로는 전체적인 프로시저를 제어한다면 / 이벤트 프로시저는 해당하는 영역에 관해서 발생한다.
매크로는 모듈에서 작성되나, 이벤트는 Sheet에서 작성을 한다.
이번 구문에서 활용한것은 이벤트가 발생하였을 때 이벤트 영역을 설정한 후 매크로를 호출하는 형태로 진행하였다.
더블 클릭이벤트와 우클릭 이벤트는 맨 하단에 Cancel = true 이 구문을 꼭 넣어서 사용해야 매크로 이후에 더블클릭과 우클릭 고유의 명령이 실행되지 않는다.
이벤트가 진행될 때는 자칫하면 이벤트가 무한 반복되어 무한루프상태로 빠질 수 있기 때문에
Application.EnableEvents = False 를 꼭 해줘서 작업하는 동안 불필요한 이벤트가 발생하지 않도록 하여야 하며
작업이 모두 종료되면 Application.EnableEvents = True 로 이벤트를 복원해줘야 한다.
더보기
Option Explicit
Sub 기초방14(rngAll As Range)
Dim rngA As Range
Dim i&
Application.EnableEvents = False '= 이벤트 정지
[b12].CurrentRegion.Offset(1).ClearContents
For Each rngA In rngAll '= 영역 순환
For i = 1 To 4
Cells(Rows.Count, 2).End(3)(2) = rngA(1, 1) '= 이름
Cells(Rows.Count, 3).End(3)(2) = Cells(3, i + 2) '= 과목
Cells(Rows.Count, 4).End(3)(2) = rngA(1, i + 1) '= 점수
Next i
Next rngA
Haja_format '= 초기화
Application.EnableEvents = True '= 이벤트 복원
End Sub
Private Function Haja_format()
[b12].CurrentRegion.HorizontalAlignment = xlCenter '= 가운데 정렬
End Function
구문자체는 어렵지 않기 때문에 추가 언급은 안해도 될것 같다.
허나 덧붙히면 Cells(rows.Count, 2) 는 Cells(rows.Count, "B") 와 같다...열이름을 열번호로 한것이다.
'VBA > 엑사남_기초방' 카테고리의 다른 글
[기초방] VBA 100제 #16 [ 이벤트 + 빈셀삭제하기 ] (0) | 2023.01.16 |
---|---|
[기초방] VBA 100제 #15 [ 이벤트 + 사용자함수 ] (0) | 2023.01.15 |
[기초방] VBA 100제 #13 [ 정규식으로 계산하기 ] (0) | 2023.01.15 |
[기초방] VBA 100제 #12 [ Like구문 ] (0) | 2023.01.10 |
[기초방] VBA 100제 #11 [ 영역과 조건에 따른 숫자채우기 ] (0) | 2023.01.07 |
댓글