셀이 값을 변경할 때, 더블 클릭이 발생할 때, 시트가 선택 될 때 등의 경우 매크로 / VBA 스 니펫을 실행할 수 있습니다.이 모든 경우에 워크 시트 이벤트 핸들러를 사용합니다. 이벤트 핸들러는 특정 이벤트가 발생할 때마다 VBA 코드를 실행하는 데 도움이됩니다.

이 기사에서는 각 워크 시트 이벤트 처리기에 대해 간략하게 설명합니다.

워크 시트 이벤트 처리기 란 무엇입니까? 워크 시트 이벤트 핸들러는 워크 시트 모듈에 로컬 인 서브 루틴입니다.

워크 시트 이벤트 처리기 코드는 어디에 작성합니까?

image

워크 시트 이벤트는 시트 개체에만 기록됩니다. 일부 모듈 또는 클래스 모듈에서 워크 시트 이벤트를 작성하면 오류가 발생하지 않지만 작동하지 않습니다.

시트 개체에 쓰려면. 그것을 두 번 클릭하거나 마우스 오른쪽 버튼을 클릭하고 코드보기를 클릭하십시오. 코드 작성 영역이 표시됩니다.

워크 시트의 특정 이벤트에 대한 코드를 작성하는 방법은 무엇입니까?

이제 편집 모드에있을 때 왼쪽 상단 모서리 드롭 다운 메뉴에서 일반을 ​​볼 수 있습니다. 드롭 다운을 클릭하고 워크 시트를 선택합니다.

이제 오른쪽 상단 모서리 드롭 다운에 모든 이벤트가 표시됩니다. 필요한 것을 선택하면 해당 이벤트에 대한 골격 코드가 작성됩니다.

image

각 이벤트에는 고정 된 프로 시저 이름이 있습니다. 예약 된 서브 루틴 이름입니다. 시트의 다른 서브 루틴에는 사용할 수 없습니다. 모듈에서는 일반 서브 루틴으로 작동합니다.

중요 : _ 해당 목록의 각 서브 루틴은 지정된 이벤트에서 실행됩니다 ._

_ 한 종류의 워크 시트 이벤트 프로시 저는 한 장에 한 번만 쓸 수 있습니다. 한 장에 두 개의 동일한 이벤트 처리 절차를 작성하면 오류가 발생하고 실행되지 않습니다. 물론 오류는 모호한 서브 루틴입니다 ._

각 이벤트에 대해 간략히 알아 보겠습니다.

1. TheWorksheet_Change (ByVal Target As Range) Event이 이벤트는 포함 된 워크 시트를 변경할 때 트리거됩니다 (서식 제외). 전체 시트에서 변경된 사항이 있으면 코드는 다음과 같습니다.

Private Sub Worksheet_Change(ByVal Target As Range)

'do somehting

Msgbox "done something"

End Sub

“대상”은 항상 활성 셀입니다.

또 다른 예 : A1이 변경되면 셀 B1에 날짜와 시간을 입력 할 수 있습니다. 이 경우 workstation_change 이벤트를 사용합니다. 코드는 다음과 같습니다.

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" Then

Range("B1").Value2 = Format(Now(), "hh:mm:ss")

End If

End Sub

A1 셀만 대상으로합니다.

범위를 타겟팅하려면 아래 예를 사용하세요.

link : / events-in-vba-run-macro-if-any-change-made-on-sheet-range [지정된 범위의 시트에서 변경된 경우 매크로 실행]

2. TheWorksheet_SelectionChange (ByVal Target As Range) * Event 이름에서 알 수 있듯이이 이벤트는 선택이 변경 될 때 트리거됩니다. 즉, 커서가 A1 셀에 있고 다른 셀로 이동하면이 서브 루틴의 코드가 실행됩니다.

아래 코드는 변경 될 때마다 짝수 행인 경우 활성 셀 색상을 변경합니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Row Mod 2 = 0 Then

Target.Interior.ColorIndex = 22

End If

End Sub

이제 커서가 짝수 행으로 이동할 때마다 색상이 지정됩니다. 홀수 행 셀은 절약됩니다.

image

Worksheet_SelectionChange 이벤트의 또 다른 예 :

link : / events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [다음을 사용하여 현재 행과 열을 강조하는 가장 간단한 VBA 코드]

3. Worksheet_Activate () 이벤트이 이벤트는 시트가 포함 된 이벤트 코드가 활성화 될 때 트리거됩니다.

이 이벤트의 골격 코드는 다음과 같습니다.

Private Sub Worksheet_Activate()

End Sub

간단한 예는 시트가 선택 될 때 시트 이름을 표시하는 것입니다.

Private Sub Worksheet_Activate()

MsgBox "You are on " & ActiveSheet.Name

End Sub

이 코드가 포함 된 시트에 오자마자 이벤트가 실행되고 “You are on sheet name”이라는 메시지가 표시됩니다.

(제 경우 sheet2).

4. Worksheet_Deactivate () 이벤트이 이벤트는 시트가 포함 된 코드를 떠날 때 트리거됩니다. 즉, 시트를 떠날 때 행을 숨기는 등의 작업을 수행하려면이 VBA 이벤트를 사용하십시오. 구문은 다음과 같습니다.

Private Sub Worksheet_Deactivate()

'your code

'

End Sub

아래 예제 Worksheet_Deativate 이벤트는이 시트를 떠날 때 마스터 시트를 떠났다는 메시지를 표시합니다.

Private Sub Worksheet_Deactivate()

MsgBox "You Left The Master Sheet"

End Sub

image

===

5. Worksheet_BeforeDelete () * Event이 이벤트는 시트를 포함하는 VBA 이벤트의 삭제를 확인할 때 트리거됩니다. 구문은 간단합니다.

Private Sub Worksheet_BeforeDelete()

End Sub

아래 코드는 삭제하려는 시트의 내용을 복사 할 것인지 묻습니다.

Private Sub Worksheet_BeforeDelete()

ans = MsgBox("Do you want to copy the content of this sheet to a new sheet?", vbYesNo)

If ans = True Then

'code to copy

End If

End Sub

6. TheWorksheet_BeforeDoubleClick (ByVal Target As Range, Cancel As Boolean) * Event이 이벤트는 대상 셀을 두 번 클릭하면 트리거됩니다. 이 VBA 워크 시트 이벤트의 구문은 다음과 같습니다.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

대상 셀 또는 범위를 설정하지 않으면 시트를 두 번 클릭 할 때마다 실행됩니다.

Cancel 변수는 부울 변수입니다. True로 설정하면 기본 동작이 발생하지 않습니다. 셀을 두 번 클릭하면 편집 모드로 전환되지 않습니다.

아래 코드는 셀을 두 번 클릭하면 셀이 색상으로 채워집니다.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Interior.ColorIndex = 7

End Sub

아래 코드는 A1 셀을 대상으로합니다. 이미 지정된 색상으로 채워져 있으면 색상이 사라집니다. 좋아요 버튼이나 체크 박스와 비슷합니다.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Address = "$A$1" Then



Cancel = True

If Target.Interior.ColorIndex = 4 Then

Target.Interior.ColorIndex = xlColorIndexNone

Else

Target.Interior.ColorIndex = 4

End If



End If



End Sub

image

7. TheWorksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean) * Event이 이벤트는 대상 셀을 마우스 오른쪽 단추로 클릭하면 트리거됩니다. 이 VBA 워크 시트 이벤트의 구문은 다음과 같습니다.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

'

'your code

'

End Sub

아래 코드는 마우스 오른쪽 버튼으로 클릭하면 값 1로 셀을 채 웁니다.

“취소”연산자를 True로 설정했기 때문에 기본 오른쪽 클릭 옵션이 표시되지 않습니다.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Cancel = True

Target.Value = 1

End Sub

8. TheWorksheet_Calculate () * Event 엑셀이 시트를 계산할 때 어떤 일이 일어나도록하려면이 이벤트를 사용하십시오. Excel이 시트를 계산할 때마다 트리거됩니다. 구문은 간단합니다.

Private Sub Worksheet_Calculate()

'

'your code

'

End Sub
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

'

'your code

'

End Sub

원하는 경우 대상 하이퍼 링크를 설정할 수 있습니다. 대상 하이퍼 링크를 설정하지 않은 경우 시트가 포함 된 코드에서 하이퍼 링크를 클릭하면 실행됩니다.

예 여러분, 이것들은 당신이 그들에 대해 알고 있다면 편리 할 몇 가지 기본적인 워크 시트 이벤트였습니다. 다음은 읽고 싶은 관련 기사입니다.

이 기사 또는 기타 Excel / VBA 관련 기사에 대해 의문이있는 경우 아래 댓글 섹션에 알려주십시오.

관련 기사 :

link : / tips-using-worksheet-change-event-to-run-macro-when-any-change-is-made [워크 시트 변경 이벤트를 사용하여 변경시 매크로 실행]* | 따라서 시트가 업데이트 될 때마다 매크로를 실행하기 위해 VBA의 워크 시트 이벤트를 사용합니다.

link : / events-in-vba-run-macro-if-any-change-made-on-sheet-range [지정된 범위의 시트에서 변경된 경우 매크로 실행]* | 지정된 범위의 값이 변경 될 때 매크로 코드를 실행하려면이 VBA 코드를 사용하십시오. 지정된 범위에서 변경된 사항을 감지하고 이벤트를 시작합니다.

link : / events-in-vba-simplest-vba-code-to-highlight-current-row-and-column-using [현재 행 및 열을 사용하여 강조 표시하는 가장 간단한 VBA 코드]| 이 작은 VBA 스 니펫을 사용하여 시트의 현재 행과 열을 강조 표시합니다.

인기 기사 :

link : / keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [50 개의 Excel 단축키로 생산성 향상]| 작업 속도를 높이십시오. 이 50 개의 바로 가기를 사용하면 Excel에서 작업 속도가 더욱 빨라집니다.

link : / formulas-and-functions-introduction-of-vlookup-function [Excel의 VLOOKUP 함수]| 이것은 다른 범위와 시트에서 값을 조회하는 데 사용되는 Excel의 가장 많이 사용되고 인기있는 기능 중 하나입니다. link : / tips-countif-in-microsoft-excel [Excel 2016의 COUNTIF]| 이 놀라운 기능을 사용하여 조건으로 값을 계산합니다. 특정 값을 계산하기 위해 데이터를 필터링 할 필요가 없습니다.

Countif 기능은 대시 보드를 준비하는 데 필수적입니다.

link : / excel-formula-and-function-excel-sumif-function [Excel에서 SUMIF 함수 사용 방법]| 이것은 또 다른 대시 보드 필수 기능입니다. 이를 통해 특정 조건에 대한 값을 합산 할 수 있습니다.