vba 특정 셀의 값에 따라 메시지 띄우기

VBA
작성자
엑셀늅늅이
작성일
2020-10-25 17:06
조회
335

Private Sub Worksheet_Activate() '시트 선택 시 셀의 값에 따라서 자동으로 잠금

Select Case [I4] '무기 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F17:J17"
Case "1": 잠금 "G17:J17"
Case "2": 잠금 "H17:J17"
Case "3": 잠금 "I17:J17"
Case "4": 잠금 "J17:J17"
Case "5": 잠금해제

End Select

Select Case [I5] '상의 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F19:J19"
Case "1": 잠금 "G19:J19"
Case "2": 잠금 "H19:J19"
Case "3": 잠금 "I19:J19"
Case "4": 잠금 "J19:J19"
Case "5": 잠금해제

End Select

Select Case [I6] '하의 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F21:J21"
Case "1": 잠금 "G21:J21"
Case "2": 잠금 "H21:J21"
Case "3": 잠금 "I21:J21"
Case "4": 잠금 "J21:J21"
Case "5": 잠금해제

End Select

Select Case [I7] '벨트 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F23:J23"
Case "1": 잠금 "G23:J23"
Case "2": 잠금 "H23:J23"
Case "3": 잠금 "I23:J23"
Case "4": 잠금 "J23:J23"
Case "5": 잠금해제

End Select

Select Case [I8] '신발 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F25:J25"
Case "1": 잠금 "G25:J25"
Case "2": 잠금 "H25:J25"
Case "3": 잠금 "I25:J25"
Case "4": 잠금 "J25:J25"
Case "5": 잠금해제

End Select

Select Case [I9] '투구 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F27:J27"
Case "1": 잠금 "G27:J27"
Case "2": 잠금 "H27:J27"
Case "3": 잠금 "I27:J27"
Case "4": 잠금 "J27:J27"
Case "5": 잠금해제

End Select

Select Case [I10] '장갑 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F29:J29"
Case "1": 잠금 "G29:J29"
Case "2": 잠금 "H29:J29"
Case "3": 잠금 "I29:J29"
Case "4": 잠금 "J29:J29"
Case "5": 잠금해제

End Select

Select Case [I11] '귀걸이 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F31:J31"
Case "1": 잠금 "G31:J31"
Case "2": 잠금 "H31:J31"
Case "3": 잠금 "I31:J31"
Case "4": 잠금 "J31:J31"
Case "5": 잠금해제

End Select

Select Case [I12] '목걸이 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F33:J33"
Case "1": 잠금 "G33:J33"
Case "2": 잠금 "H33:J33"
Case "3": 잠금 "I33:J33"
Case "4": 잠금 "J33:J33"
Case "5": 잠금해제

End Select

Select Case [I13] '반지 옵션 수 발생 시

Case "": 잠금해제
Case "0": 잠금 "F35:J35"
Case "1": 잠금 "G35:J35"
Case "2": 잠금 "H35:J35"
Case "3": 잠금 "I35:J35"
Case "4": 잠금 "J35:J35"
Case "5": 잠금해제

End Select

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range) '셀 선택 시 셀이 잠금 상태일 때 메시지 표시

With Target

If [I4].CountLarge > 1 Then Exit Sub

If Not [I4].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I5].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I6].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I7].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I8].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I9].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I10].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I11].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I12].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

If Not [I13].Locked And .Locked Then MsgBox "해당 옵션은 비활성화 상태입니다."

End With

End Sub

Private Sub Worksheet_Change(ByVal Target As Range) 'A1셀의 값에 따라서 시트잠금영역설정후 시트잠금 또는 시트잠금해제

With Target

If .CountLarge > 1 Then Exit Sub

If .Address <> "$I$4" Then Exit Sub

Select Case .Value '무기 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F17:J17"
Case "1": 잠금 "G17:J17"
Case "2": 잠금 "H17:J17"
Case "3": 잠금 "I17:J17"
Case "4": 잠금 "J17:J17"
Case "5": 잠금해제

End Select

If .Address <> "$I$5" Then Exit Sub

Select Case .Value '상의 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F19:J19"
Case "1": 잠금 "G19:J19"
Case "2": 잠금 "H19:J19"
Case "3": 잠금 "I19:J19"
Case "4": 잠금 "J19:J19"
Case "5": 잠금해제

End Select

If .Address <> "$I$6" Then Exit Sub

Select Case .Value '하의 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F21:J21"
Case "1": 잠금 "G21:J21"
Case "2": 잠금 "H21:J21"
Case "3": 잠금 "I21:J21"
Case "4": 잠금 "J21:J21"
Case "5": 잠금해제

End Select

If .Address <> "$I$7" Then Exit Sub

Select Case .Value '벨트 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F23:J23"
Case "1": 잠금 "G23:J23"
Case "2": 잠금 "H23:J23"
Case "3": 잠금 "I23:J23"
Case "4": 잠금 "J23:J23"
Case "5": 잠금해제

End Select

If .Address <> "$I$8" Then Exit Sub

Select Case .Value '신발 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F25:J25"
Case "1": 잠금 "G25:J25"
Case "2": 잠금 "H25:J25"
Case "3": 잠금 "I25:J25"
Case "4": 잠금 "J25:J25"
Case "5": 잠금해제

End Select

If .Address <> "$I$9" Then Exit Sub

Select Case .Value '투구 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F27:J27"
Case "1": 잠금 "G27:J27"
Case "2": 잠금 "H27:J27"
Case "3": 잠금 "I27:J27"
Case "4": 잠금 "J27:J27"
Case "5": 잠금해제

End Select

If .Address <> "$I$10" Then Exit Sub

Select Case .Value '장갑 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F29:J29"
Case "1": 잠금 "G29:J29"
Case "2": 잠금 "H29:J29"
Case "3": 잠금 "I29:J29"
Case "4": 잠금 "J29:J29"
Case "5": 잠금해제

End Select

If .Address <> "$I$11" Then Exit Sub

Select Case .Value '귀걸이 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F31:J31"
Case "1": 잠금 "G31:J31"
Case "2": 잠금 "H31:J31"
Case "3": 잠금 "I31:J31"
Case "4": 잠금 "J31:J31"
Case "5": 잠금해제

End Select

If .Address <> "$I$12" Then Exit Sub

Select Case .Value '목걸이 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F33:J33"
Case "1": 잠금 "G33:J33"
Case "2": 잠금 "H33:J33"
Case "3": 잠금 "I33:J33"
Case "4": 잠금 "J33:J33"
Case "5": 잠금해제

End Select

If .Address <> "$I$13" Then Exit Sub

Select Case .Value '반지 옵션 수에 따라 잠금 영역 설정

Case "": 잠금해제
Case "0": 잠금 "F35:J35"
Case "1": 잠금 "G35:J35"
Case "2": 잠금 "H35:J35"
Case "3": 잠금 "I35:J35"
Case "4": 잠금 "J35:J35"
Case "5": 잠금해제

End Select

End With

End Sub

Function 잠금(ByVal rgs As String) '영역주소를 입력받아 전체셀은 잠금해제.. 영역은 잠금하는 함수

With ActiveSheet

.Unprotect
.Cells.Locked = False
.Range(rgs).Locked = True
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True

End With

End Function

Function 잠금해제() '모든 셀을 잠금해제 하는 함수

With ActiveSheet

.Unprotect
.Cells.Locked = True

End With

End Function

 

특정 셀의 값에 따라 잠금 또는 잠금 해제 하는 기능을 구현했습니다.

기능에 오류가 있어 어떻게 수정을 해야 할지 막막해서 글을 적어봅니다.

 

  1. I4 셀에서 값을 받아 메시지를 출력하는 F17 ~ J17에서만 메시지 작동<F18(F35) ~ J18(J35) 등의 메시지 출력 안 됨>
  2. 메시지 출력 시 동일 메시지 다 회 출력

어떻게 수정해야 할지 모르겠네요.

 

.countLarge 함수 부분을 수정해야 할 것 같은데... 어떻게 해야 할지 감이 잡히지 않습니다.

전체 1

  • 2020-10-26 21:57

    안녕하세요. 작성하신 명령문을 모두 적어주셨네요 ^^; 모든 명령문을 검토하여 답변을 드리면 좋겠지만 내용이 많아 대략적인 의견을 드리겠습니다.

    1. I4 셀에서 값을 받아 메시지를 출력하는 F17 ~ J17에서만 메시지 작동
    2. 메시지 출력 시 동일 메시지 다 회 출력

    적어주신 문제는 Select Case로 특정 조건 만족 시, 원하는 명령문을 실행한 뒤 Exit Function 으로 해당 함수를 강제 종료하는 방법으로 접근하셔야 할 듯 합니다.

    명령문을 살펴보니, [I4].CountLarge 로 사용하셨는데, [I4].CountLarge는 항상 결과값이 1이 출력됩니다.

    If [I4].CountLarge > 1 Then Exit Sub 는 항상 False가 반환되므로 구현하고자 하시는 방향에 맞춰 적절한 수정이 필요해보입니다.

    답변이 도움이 되셨길 바랍니다. 감사합니다.


전체 4,291
번호 카테고리 제목 작성자 작성일 추천 조회
4274 기능/도구
New 엑셀 텍스트나누기 '텍스트한정자'에 대해서 질문드립니다.
월마리아 | 21:04 | 추천 0 | 조회 4
월마리아 21:04 0 4
4273 함수/공식
New 결제건수에서 중복이름 제거한 뒤 인원수표기 첨부파일 (1)
드래군 | 18:37 | 추천 0 | 조회 16
드래군 18:37 0 16
4272 VBA
New WORKBOOK_OPEN 에 두 가지 모듈 입력하는 법...
tu1541 | 17:58 | 추천 0 | 조회 13
tu1541 17:58 0 13
4271 함수/공식
New 중복 문자 제거후 정렬 방법 첨부파일 (1)
붉은머리샹크스 | 17:49 | 추천 0 | 조회 14
붉은머리샹크스 17:49 0 14
4270 함수/공식
New 몇일을 고민하다 이렇게 도움을 구합니다. (예제파일 첨부드렸습니다. 첨부파일 (1)
JS_SHIN | 17:42 | 추천 0 | 조회 21
JS_SHIN 17:42 0 21
4269 VBA
New VBA for문에 다른시트 vlookup 하기! 질문입니다! (1)
mir**** | 17:38 | 추천 0 | 조회 11
mir**** 17:38 0 11
4268 함수/공식
New 2개의 시트에 데이터 동시 입력 (2)
홍병주 | 16:25 | 추천 0 | 조회 27
홍병주 16:25 0 27
4267 함수/공식
New 가격 평균을 구하고 싶습니다. 첨부파일 (2)
워싱턴 | 15:17 | 추천 1 | 조회 28
워싱턴 15:17 1 28
4266 VBA
New 기능 추가 관련 질문입니다. (1)
노랑토끼 | 14:03 | 추천 0 | 조회 20
노랑토끼 14:03 0 20
4265 차트/그래프
New 동적차트 문제가 생겼어요 첨부파일 (2)
두찌아빠 | 12:38 | 추천 0 | 조회 19
두찌아빠 12:38 0 19
4264 함수/공식
New 원하는 범위만 지정해서 정렬하는게 가능할까요? 첨부파일 (2)
롤로랄라 | 11:48 | 추천 0 | 조회 22
롤로랄라 11:48 0 22
4263 함수/공식
New 중복제거 인원수 첨부파일 (5)
드래군 | 11:25 | 추천 1 | 조회 26
드래군 11:25 1 26
4262 함수/공식
New B시트에 있는 값을 A 시트에 불러오는 함수 알려주실 수 있나요....(예제파일 있음) 첨부파일 (5)
이주 | 08:56 | 추천 0 | 조회 34
이주 08:56 0 34
4261 함수/공식
New 도와주세요~ 두가지 질문입니다ㅠㅠ 첨부파일 (2)
엑셀왕초보 | 02:33 | 추천 0 | 조회 24
엑셀왕초보 02:33 0 24
4260 VBA
New 재고관리폼을 이용하여 LOT로 제품을 등록하고싶습니다. 첨부파일
가을전어 | 00:20 | 추천 0 | 조회 22
가을전어 00:20 0 22
4259 함수/공식
New 엑셀 배열 조건 합계 수식 관련해서 도와주세요 첨부파일 (1)
OoooPs | 2021.10.25 | 추천 0 | 조회 31
OoooPs 2021.10.25 0 31
함수/공식
New Re:엑셀 배열 조건 합계 수식 관련해서 도와주세요 (1)
Yukon | 2021.10.25 | 추천 0 | 조회 28
Yukon 2021.10.25 0 28
4258 함수/공식
New 함수값 표시방법 문의드려요~ 첨부파일 (4) 답변완료
바람투유 | 2021.10.25 | 추천 0 | 조회 25
바람투유 2021.10.25 0 25
4257 VBA
New ms 365 쓰시는분 계신가요? 사내 엑셀 동기화 + vba 관련 (4) 답변완료
백일호 | 2021.10.25 | 추천 1 | 조회 37
백일호 2021.10.25 1 37
4256 VBA
New 도와주세요 ㅠㅠ어떻게해야될까요 (1)
dud**** | 2021.10.25 | 추천 0 | 조회 36
dud**** 2021.10.25 0 36
4255 문서서식
New 사용자 지정서식 관련하여 앞에 문자 고정으로 하고, 뒤에 숫자 입력후 " -00"등을 붙이면 앞의고정 문자가 사라지지 않는 방법 (2) 답변완료
아빠의꿈 | 2021.10.25 | 추천 0 | 조회 24
아빠의꿈 2021.10.25 0 24
4254 함수/공식
New indirect 함수 관련 질문 입니다 해결방법좀 가르쳐주세요 (4)
밍장군 | 2021.10.25 | 추천 0 | 조회 28
밍장군 2021.10.25 0 28
4253 VBA
New QR바코드 한글작성 및 내용추가편집기능
H.B | 2021.10.25 | 추천 1 | 조회 18
H.B 2021.10.25 1 18
4252 VBA
New 크롤링 실행이 안되는 문제가 있습니다 (1)
미르르르르르르르릉 | 2021.10.25 | 추천 0 | 조회 20
미르르르르르르르릉 2021.10.25 0 20
4251 VBA
New 재고관리 VBA 강의 중 Insert_Record에 관해서 문의드립니다. (1)
올마이타 | 2021.10.25 | 추천 0 | 조회 27
올마이타 2021.10.25 0 27
4250 차트/그래프
New 일주일, 24시간 단위의 차트를 만드는 방법을 알고 싶습니다. 첨부파일 (2)
겨울 | 2021.10.25 | 추천 -1 | 조회 29
겨울 2021.10.25 -1 29
4249 함수/공식
New 동적범위 차트설정에 문제가 생겼어요~ (2) 답변완료
두찌아빠 | 2021.10.24 | 추천 0 | 조회 26
두찌아빠 2021.10.24 0 26
4248 VBA
New VBA로 DATA받는 셀 분할 가능할까요..? (2)
너스 | 2021.10.24 | 추천 0 | 조회 36
너스 2021.10.24 0 36
4247 함수/공식
New 엑셀 특정행만 중복제거 첨부파일 (5)
한성우 | 2021.10.24 | 추천 0 | 조회 64
한성우 2021.10.24 0 64
4246 파워쿼리/피벗
New 파워쿼리에서 원본데이터 수정 할 수 있는 방법이 있나요? (2) 답변완료
월마리아 | 2021.10.24 | 추천 0 | 조회 33
월마리아 2021.10.24 0 33
4245 VBA
품목별 주문관리 시트 첨부파일 (2)
몽쉘 | 2021.10.23 | 추천 0 | 조회 62
몽쉘 2021.10.23 0 62