모듈에서 시트 이벤트 작성방법

VBA
작성자
도다리
작성일
2022-08-03 11:15
조회
78
엑셀버전 : 엑셀2016

운영체제 : 윈도우11

엑셀의 BVA에는 모듈, 시트, 현재통합문서의 3가지로 작성이 되는 걸로 알고 있습니다.

그런데, 모듈코드에서 시트용 이벤트 코드를 작성할려면 어떻게 해야 하는지요???

 

Module1에서

Sheets.Add after:=Sheets(1)

 

이렇게 추가된 시트에 아래의 시트 이벤트 코드를 작성하고 싶습니다.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count = 1 Then
If Not Intersect(Target, [C20]) Is Nothing Then

Range("A1").Activate

Msgbox  "선택입니다."

End if

End if

전체 3

  • 2022-08-03 12:04

    @도다리 님 워크 시트의 .codename을 변수에 넣고

    with ActiveWorkbook.VBProject.VBComponents(워크시트CodeName).CodeModule

    .AddFromString ("코드 내용")

    end with

    하시면되는데, 쌍따옴표 안에 코드 내용을 하나의 스트링으로 다 넣어야 합니다.

    스트링이므로 엔터는 & vbCrLf &
    쌍따옴표 "는 2번 반복해서 써주면 됩니다. ""

    시트에 기존 코드가 있는 경우엔
    그냥 아랫줄에 이어서 써버리기 때문에 에러가 납니다.

    .CountOfLines로 기존 라인수를 알아내고
    .DeleteLines 로 지운 다음에 코드를 쓰게끔 하면 좀 더 완성도 높은 코드가 되겠죠

    일반적인 코드는 이것만으로도 작동하는데, 가끔 vba 창을 최소 1번은 열어야 작동하는 코드도 있습니다.

    이 경우 저 코드 앞 뒤에
    Application.VBE.MainWindow.Visible = True
    (코드)
    Application.VBE.MainWindow.Visible = False
    를 넣어서 vba창을 열었다 닫는 꼼수를 쓰면 잘 작동합니다.


    • 2022-08-03 20:31

      @ak 님 감사합니다.

      그런데, 스트링 코드 속에 함수를 호출하는 구문이 있습니다.

      함수가 실행이 되지 않습니다.

      한번 더 답변 주시면 감사하겠습니다.


  • 2022-08-03 16:20
    채택된 답변

    @도다리 님 VBA 편집기에서 '클래스 모듈'을 삽입하시고, WithEvents 를 사용하여 아래와 같이 입력합니다. (이름을 'clsEvents'로 한 예제임)

    '###########################

    Private WithEvents App As Application

    Private Sub Class_Initialize()
    Set App = Application
    End Sub

    Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

    '// 실제사용할 코드 추가합니다.

    '// 모든 시트에서 작업할 게 아니라면, 아래와 같이 Sh.Name 같은 것으로 조절합니다.

    '// IF Sh.name <> "NewSheetName" Then Exit Sub

    End Sub

    '###########################

     

    최종적으로 '현재_통합_문서' 클래스에 아래와 같이 입력하면 위에 정의한 클래스를 사용할 수 있습니다.

    '###########################

    Private XLApp As clsEvents

    Private Sub Workbook_Open()
    Set XLApp = New clsEvents
    End Sub

    '###########################


전체 7,366
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[🏆 VBA 4주 완성 특별 스터디] 1기 - 우수 졸업생 및 후기, 축하합니다! (6)
오빠두엑셀 | 2022.07.31 | 추천 8 | 조회 1334
오빠두엑셀 2022.07.31 8 1334
공지사항 함수/공식
[신규 기능 업데이트!] 👉 이제 게시글 작성시 스크린샷 복/붙이 가능합니다! 😎 (2)
오빠두엑셀 | 2022.08.04 | 추천 4 | 조회 277
오빠두엑셀 2022.08.04 4 277
공지사항 함수/공식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (88)
오빠두엑셀 | 2021.10.28 | 추천 118 | 조회 6280
오빠두엑셀 2021.10.28 118 6280
41214 함수/공식
New 동일 파일 시트 단독 작업 후 붙여넣기 시 함수 참조값이 변경될 때 (1)
대전엑린이 | 10:56 | 추천 0 | 조회 15
대전엑린이 10:56 - 15
41212 VBA
New VBA에서 Xlookup를 사용할 때, 다른 파일에 다른 시트를 참조 할 때, 참조방식에 관한 질문 첨부파일 (2)
DanP | 08:42 | 추천 0 | 조회 23
DanP 08:42 - 23
41211 함수/공식
New 수식의 셀이 비어있을경우 셀이 비어있도록 하는 방법이 있을까요?? 도와주세요..며칠째 이것만 찾고있습니다. (5) 답변완료
박현중 | 08:24 | 추천 0 | 조회 38
박현중 08:24 - 38
41209 함수/공식
New 특정값 곱하기 열에 자동계산 도와주세요 첨부파일 (1)
쳐바 | 03:12 | 추천 0 | 조회 23
쳐바 03:12 - 23
41206 기능/도구
New 엑셀 기능 두셀의 값 위치 바꾸기 첨부파일 (4)
엑셀공부중 | 2022.08.15 | 추천 0 | 조회 37
엑셀공부중 2022.08.15 - 37
41198 VBA
New 유저폼 강제종료 할수 있는 방법이 있을까요? (1)
033cola | 2022.08.15 | 추천 0 | 조회 35
033cola 2022.08.15 - 35
41194 파워쿼리/피벗
New 파워쿼리 사용자지정열에 관한 아주 간단한 질문드립니다. (AND, OR조건과 줄바꿈) 엑셀파일첨부파일
월마리아 | 2022.08.15 | 추천 0 | 조회 25
월마리아 2022.08.15 - 25
41193 함수/공식
New 월간 세일즈 타겟에서 남은 금액 계산 방법이 있나요? 엑셀파일 (1)
LULLABY | 2022.08.15 | 추천 0 | 조회 21
LULLABY 2022.08.15 - 21
41184 피벗테이블
New 피벗테이블과 시트 부분 보호 엑셀파일 (1)
꿈꾸는부자 | 2022.08.15 | 추천 -1 | 조회 32
꿈꾸는부자 2022.08.15 -1 32
41182 피벗테이블
New 엑셀 피벗 엑셀파일첨부파일 (2) 답변완료
win | 2022.08.15 | 추천 0 | 조회 48
win 2022.08.15 - 48
41180 VBA
New 시트모으기 매크로 관련 보완 및 조언 요청 드립니다. 첨부파일 (2) 답변완료
김원중 | 2022.08.15 | 추천 0 | 조회 37
김원중 2022.08.15 - 37
41174 함수/공식
New 엑셀 다른시트에서 날짜에 맞춰서 값 불러오기 수식을 어떻게 짜야할지 모르겠어요. 첨부파일 (8) 답변완료
민호 | 2022.08.14 | 추천 0 | 조회 65
민호 2022.08.14 - 65
41173 함수/공식
New 오빠두에서 제공하는 견적서에 외화를 추가하고 싶습니다. (1)
농푸 | 2022.08.14 | 추천 0 | 조회 25
농푸 2022.08.14 - 25
41170 문서서식
New (초보질문)채우기 색만 복사 붙여넣기 하는 방법 좀 알려주세요~ 엑셀파일첨부파일 (4) 답변완료
추바카 | 2022.08.14 | 추천 0 | 조회 43
추바카 2022.08.14 - 43
41167 기능/도구
New 고급필터 결과값 셀에 형식을 주려면 어떻게 해야 할까요? (1)
| 2022.08.14 | 추천 0 | 조회 31
2022.08.14 - 31
41162 VBA
New 달력 유저폼에서 유저폼 X 하면 현재 날짜 변경 없으면 합니다. 엑셀파일첨부파일 (4) 답변완료
033cola | 2022.08.13 | 추천 0 | 조회 45
033cola 2022.08.13 - 45
41159 함수/공식
New 해당 조건 개수찾기 Max 함수 예제 엑셀파일 (1) 답변완료
Kim Si Yoon | 2022.08.13 | 추천 0 | 조회 37
Kim Si Yoon 2022.08.13 - 37
41148 VBA
New 셀에서 특정 위치에 있는 문자의 색상을 변경하는 방법 첨부파일 (2) 답변완료
:+:하늘비:+: | 2022.08.13 | 추천 0 | 조회 53
:+:하늘비:+: 2022.08.13 - 53
41147 문서서식
New 엑셀에서 픽셀에 의미에 대해서 질문드립니다. 첨부파일 (5) 답변완료
월마리아 | 2022.08.13 | 추천 0 | 조회 72
월마리아 2022.08.13 - 72
41145 함수/공식
New 이런 경우는 어떻게 해야할까요? 첨부파일 (4) 답변완료
Utaeks | 2022.08.13 | 추천 1 | 조회 62
Utaeks 2022.08.13 1 62
41141 함수/공식
New 어떤 함수를 써야할까요? 첨부파일 (3)
머지않아VBA고수 | 2022.08.13 | 추천 0 | 조회 60
머지않아VBA고수 2022.08.13 - 60
41140 VBA
New 매크로 파일 저장방법이 따로 있나요?파일목록이 추가될때마다 저장확인창이 하나씩 늘어나요ㅠㅠ 첨부파일 (1) 답변완료
pjc**** | 2022.08.13 | 추천 0 | 조회 28
pjc**** 2022.08.13 - 28
41132 함수/공식
New 함수를 간단히 할 수 있을까요? 엑셀파일 (5) 답변완료
안동근 | 2022.08.12 | 추천 0 | 조회 68
안동근 2022.08.12 - 68
41129 기능/도구
New 빠른 실행 도구 모음에서 명령 레이블 표시 또는 숨기기 첨부파일 (11) 답변완료
fabikim | 2022.08.12 | 추천 0 | 조회 53
fabikim 2022.08.12 - 53
41126 VBA
New VBA 자동화 용어 및 규칙 등의 작동원리 해석 문의 엑셀파일 (2) 답변완료
pjc**** | 2022.08.12 | 추천 0 | 조회 61
pjc**** 2022.08.12 - 61
41123 함수/공식
New 어떤 함수가 입력된건지 알고싶어요.(함수가 가려져 있는건지 여부도 알고싶네요) 첨부파일 (2) 답변완료
일개회사원 | 2022.08.12 | 추천 0 | 조회 55
일개회사원 2022.08.12 - 55
41117 피벗테이블
New 데이터 모델 관련 오류인데 어떤 오류인지 도저히 모르겠습니다ㅠ 첨부파일 (2) 답변완료
ㅎㅎ | 2022.08.12 | 추천 0 | 조회 51
ㅎㅎ 2022.08.12 - 51
41116 피벗테이블
New 피벗테이블 슬라이서 문의 첨부파일 (1)
조동호 | 2022.08.12 | 추천 0 | 조회 40
조동호 2022.08.12 - 40
41114 함수/공식
New Lookup 함수사용시 출력되는 날짜의 형식오류 첨부파일 (3)
조민양 | 2022.08.12 | 추천 0 | 조회 36
조민양 2022.08.12 - 36
41112 피벗테이블
New 엑셀 피벗테이블 필터부분을 가리는 방법을 알고 싶습니다! 첨부파일 (3)
이재호 | 2022.08.12 | 추천 0 | 조회 35
이재호 2022.08.12 - 35