Event

BeforeDoubleClick 이벤트

노만e 2025. 3. 18. 06:32

엑셀 VBA에서 Worksheet_BeforeDoubleClick 이벤트는 사용자가 특정 시트에서 셀을 더블 클릭할 때 실행되는 이벤트입니다.

즉, 더블 클릭을 감지하여 특정 동작을 자동으로 수행할 수 있도록 설정할 때 사용됩니다.


1. 기본 문법

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
' 실행할 코드
End Sub
매개변수
설명
Target
사용자가 더블 클릭한 셀의 범위 (Range 개체)
Cancel
True로 설정하면 기본 더블 클릭 동작(편집 모드 진입)을 막음

📌 이 코드는 워크시트 개체(ThisWorkbook이 아닌 개별 시트)에 작성해야 함

📌 더블 클릭 동작을 비활성화하려면 Cancel = True 사용


2. 셀을 더블 클릭하면 메시지 표시

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
MsgBox "더블 클릭한 셀: " & Target.Address
End Sub

📌 사용자가 셀을 더블 클릭하면 해당 셀 주소를 메시지로 표시


3. 더블 클릭 방지 (편집 모드 비활성화)

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

📌 더블 클릭해도 셀 편집 모드로 들어가지 않도록 설정


4. 특정 범위에서만 더블 클릭 방지

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
Cancel = True
MsgBox "A1:A10 범위에서는 더블 클릭이 비활성화되었습니다."
End If
End Sub

📌 A1:A10 범위에서 더블 클릭하면 편집 모드를 비활성화하고 메시지 표시


5. 더블 클릭하면 특정 셀에 현재 날짜 입력

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target.Value = Date
Cancel = True
End Sub

📌 더블 클릭한 셀에 오늘 날짜를 자동 입력 (Cancel = True로 편집 모드 방지)


6. 더블 클릭하면 특정 시트로 이동

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$B$2" Then
Sheets("보고서").Activate
MsgBox "보고서 시트로 이동합니다."
Cancel = True
End If
End Sub

📌 B2 셀을 더블 클릭하면 "보고서" 시트로 자동 이동


7. 더블 클릭하면 특정 값을 입력 (체크/해제)

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 3 Then ' C열(3번째 열)에서만 동작
If Target.Value = "✔" Then
Target.Value = ""
Else
Target.Value = "✔"
End If
Cancel = True
End If
End Sub

📌 C열을 더블 클릭하면 "✔" 체크 표시를 추가하거나 제거


8. 더블 클릭하면 색상 변경

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Interior.Color = RGB(255, 255, 0) Then ' 노란색이면
Target.Interior.Color = xlNone ' 원래대로
Else
Target.Interior.Color = RGB(255, 255, 0) ' 노란색으로 변경
End If
Cancel = True
End Sub

📌 셀을 더블 클릭하면 노란색으로 변경, 다시 클릭하면 원래대로 복구


9. 더블 클릭 시 입력된 데이터 삭제

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not IsEmpty(Target) Then
Target.ClearContents
MsgBox "데이터가 삭제되었습니다."
Cancel = True
End If
End Sub

📌 더블 클릭하면 셀의 데이터를 삭제하고 메시지 표시


10. 더블 클릭하면 특정 매크로 실행

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address = "$D$5" Then
Call 내매크로
Cancel = True
End If
End Sub
Sub 내매크로()
MsgBox "D5 셀을 더블 클릭하여 매크로가 실행되었습니다!"
End Sub

📌 D5 셀을 더블 클릭하면 내매크로 실행


11. 더블 클릭하면 하이퍼링크처럼 다른 시트로 이동

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Value
Case "홈"
Sheets("홈").Activate
Case "보고서"
Sheets("보고서").Activate
Case "데이터"
Sheets("데이터").Activate
End Select
Cancel = True
End Sub

📌 셀에 "홈", "보고서", "데이터"가 입력된 경우, 해당 시트로 이동


12. 더블 클릭한 셀의 값으로 필터 적용

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
ActiveSheet.Range("A1:A100").AutoFilter Field:=1, Criteria1:=Target.Value
Cancel = True
End If
End Sub

📌 A2:A100 셀을 더블 클릭하면 해당 값으로 자동 필터 적용


13. 더블 클릭하면 음성 안내 실행

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim SpeakText As String
SpeakText = "더블 클릭한 값은 " & Target.Value & "입니다."
Application.Speech.Speak SpeakText
Cancel = True
End Sub

📌 더블 클릭한 셀의 값을 음성으로 읽어줌 (Windows TTS 기능 활용)


📌 BeforeDoubleClick 사용 시 주의할 점

  1. 해당 이벤트는 워크시트 개체(Sheet1, Sheet2, ...)에서만 동작
  2. → 모듈(Module)에 작성하면 실행되지 않음
  3. Cancel = True를 설정하지 않으면 기본 더블 클릭 동작(편집 모드)도 실행됨
  4. Intersect(Target, 범위)를 사용하여 특정 범위에서만 실행하도록 제한 가능
  5. 셀의 값이 변경되는 경우 Target.Value 활용 가능

📝 정리

기능
VBA 코드 (Worksheet_BeforeDoubleClick)
더블 클릭 시 메시지 표시
MsgBox "셀 주소: " & Target.Address
더블 클릭 방지 (편집 모드 비활성화)
Cancel = True
특정 범위에서만 실행
If Not Intersect(Target, Range("A1:A10")) Is Nothing Then
셀을 더블 클릭하면 현재 날짜 입력
Target.Value = Date
더블 클릭하면 시트 이동
Sheets("보고서").Activate
체크박스처럼 "✔" 입력/제거
If Target.Value = "✔" Then Target.Value = "" Else Target.Value = "✔"
셀 배경색 변경 (노란색 토글)
Target.Interior.Color = RGB(255,255,0)
더블 클릭하면 데이터 삭제
Target.ClearContents
하이퍼링크처럼 특정 시트로 이동
Select Case Target.Value 활용
더블 클릭한 값으로 자동 필터 적용
ActiveSheet.Range("A1:A100").AutoFilter
더블 클릭한 값 음성 출력
Application.Speech.Speak Target.Value

🔥 VBA의 BeforeDoubleClick을 활용하면 편집 모드를 방지하고, 자동화 기능을 추가할 수 있습니다! 🚀