본문 바로가기
VBA

[VBA] 선택적 유효성검사

by 일등미노왕국 2022. 4. 27.

본인이 하는일 중에 특정 입력하는 부분은 매크로로 일괄 입력되도록 하였다.

허나 하루에 3-4건 정도 수정을 해야 하는 업무가 발생한다.

그냥 수기로 써도 되지만 만약 재고 리스트와 이름이 다르거나 띄어쓰기 여부에도 값을 다르게 판단하여 재고리스트에 정확하게 값을 가져오지 못한다...

 

그렇다고 유효성검사를 쭈욱 설정하는것도 뭔가 본인이 추구하는 엑셀하고도 맞지 않는다.

해서 혹시 수정을 할 경우에만 선택적으로 유효성 검사가 가능한지에 대한 궁금증이 생겼다.. 이게 된다면 필요시만 유효성검사를 가져오면 되고 수정후에는 유효성 검사를 삭제하게 되니 이전보다 실수도 줄이고 깔끔할 수 있을 거라는 결론이 나왔다...

 

이름하여 선택적 유효성검사.....ㅋㅋㅋ

코드진행은 이렇다.

1) 회원명을 이름정의로 영역설정

2) B열에서 더블 클릭시 유효성 검사실행

3) B열 이외에는 이벤트가 종료

4) 두개 이상의 셀은 선택할 수 없다.

5) 마지막으로, 영역을 선택하면 이벤트 종료

Option Explicit

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim rngX As Range: Set rngX = Selection                 '= 더블 클릭한 셀을 이벤트 영역으로 설정
    
    Set rngX = Intersect(rngX, Columns("b"))                '= 다른곳이 아닌 B열만 이벤트 영역으로 설정
    If Target.Count > 1 Then Exit Sub                       '= 셀 선택이 하나이상이면 종료
    
    If rngX Is Nothing Then Exit Sub                        '= B열이 아닌 다른 영역을 선택하면 종료
    
        With rngX.Validation                                '= 유효성 검사 선언
            .Delete                                         '= 기존 유효성 검사 삭제
            .Add Type:=xlValidateList, Formula1:="=회원명"  '= 회원명 리스트를 유효성 목록에 추가해라
        End With
        
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Dim rngX As Range: Set rngX = Selection                '= 선택한 셀을 벗어나면
    
    With rngX.Validation                                   '= 유효성 검사를 삭제해라
        .Delete
    End With

End Sub

 

일단 본인업무에 탑재를 하였다...

정말 편하고 대박이다...

공부해보시길 바란다.

선택적유효성검사(22.04.27).xlsm
0.02MB

댓글