Lost Information!

엑셀 VBA 기초 - 데이터 유효성에 대해서 - 2편 본문

개인브랜드블로그를 만들어 보자/엑셀VBA

엑셀 VBA 기초 - 데이터 유효성에 대해서 - 2편

Lostinformation 2020. 12. 16. 17:55

모두가 칼퇴하는 그날까지~

 

지난 글에서는 

데이터 유효성 검사에 필요한

SUB와 FUNCTION의 차이

알려드렸는데요.

 

만일 저번 내용을 모르시거나

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2465

 

엑셀 VBA 기초 - 데이터 유효성에 대해서 - 1편

모두가 칼퇴하는 그날까지~ 지난 글에서는 엑셀에 공부해놓은 VBA지식을 정리하여 엑셀에서 쉽게 찾는 방법을 알려드렸는데요. 만일 저번 내용을 모르시거나 기억이 나질 않으신다면 밑에 글

red-s.tistory.com

 

이번 글은 저번 글에 

이어서 내용이 진행됩니다.

 

그럼 엑셀을 실행하고

ALT +F11을 눌러주세요

 

그리고 만들었던

UserForm을 더블클릭하여

매크로를 작성하겠습니다.

 

 

그리고 이렇게 

먼저 적어주세요.

 

바로 설명해드리면

 

Private Function Data_Check() As String

Function을 사용해서

data_check라는

매크로를 만들어

 

Dim txtError        As String

txtError라는 string타입의

변수를 만들어

    

txtError = ""

txtError의 값은

아무것도 없어
    
If Me.Tb_Name = "" Then txtError = "성명 누락"

만약 첫 번째 이름을

적어야 하는 상자가 

공백이라면 성명 누락이라는

txtError로 알려줘

    
If Me.Cb_MF = "" Then txtError = txtError & vbCr & "성별 누락"

만약 캄보 박스 즉

성별을 선택하는 곳이

공백이라면 txtError로

알려주는데 

기존 성명 누락 에러가 있다면

한 칸 내리고 성별 누락을

적어서 알려줘

     
If Me.Tb_Age = "" Then
txtError = txtError & vbCr & "나이 누락"

만약 나이도 공백이라면

기존의 성명 누락과

성별 누락 밑으로 한 칸 내리고

나이 누락을 적어서 알려줘

 

ElseIf Not IsNumeric(Me.Tb_Age) Then
txtError = txtError & vbCr & "나이는 숫자만 입력"
End If

만약 입력이 되어있지만

숫자가 아니라면

기존의 메시지를 두고

한 칸 내려서

나이는 숫자만 입력이라고

적어서 알려줘

(Not IsNumeric

숫자가 아니라면)

     
Data_Check = txtError

Data_Check값은

txtError값을 넣어서

위쪽으로 보내줘

 

End Function

 

이렇게 적고

 

 

이렇게 기존의 UserForm

매크로에서 Data_Check를

추가해줘야 합니다.

 

Dim strCheck    As String

strCheck라는 변수를

설정하고 

    
strCheck = Data_Check

strCheck는 밑의

Data_Check의 값을

가져와서 사용해


If strCheck <> "" Then

만약 strCheck의 값이

공백이 아니라면

 

MsgBox strCheck, , "입력 오류"
Exit Sub
End If

입력 오류라는 메시지 박스에

체크된 내용을 띄어주고

밑의 내용은 실행하지 마 

 

이렇게 적고 실행하게 되면

 

이렇게 올바르게 적지 않는다면

입력 오류 창이 뜨게 되고

어떤 부분이 누락되었는지

알려주게 됩니다.

 

 

그리고 이렇게 나이를

숫자로 적지 않았을 때도

숫자로 적어주라고 

알려줄 수 있습니다.

 

이것이 바로 

데이터 유효성 검사이며

이를 활용하여 원하는 

데이터를 수집할 수 있습니다.

 

그럼 여기까지 궁금하신 점은

댓글에 남겨주시고

공감 구독도 부탁드립니다.

 

2 Comments
댓글쓰기 폼