입력 화면에서 사용자가 입력한 것을 확인하기 위한 코드를 작성하였습니다.

코드1
'/***********************************************************************************
' 함수명    : CheckTextBox
' 작성자    : 정진우
' 설명      : TextBox 입력값이 존재하는 지 여부를 판단해 오류가 있을 경우, msgbox를 띄우고 false를 반환
' 리턴값    : [false] 오류 발생
' 매개변수
'           txt     : 대상 TextBox
'           title   : 대상 TextBox 갖고 있는 내용
' 이력사항
'           2011.12.20: 생성
'/***********************************************************************************
Public Function CheckTextBox(ByRef txt As TextBox, ByVal title As String, Optional ByVal isEssencial As Boolean = False, Optional ByVal length As Integer = 1000) As Boolean
    If isEssencial = True And (IsNull(txt.Text) Or txt.Text = "") Then
        MsgBox title & " 입력하세요." & Space(6), 48, "입력 오류"
        txt.SetFocus
        CheckTextBox = False
    End If
    
    If (Not IsNull(txt.Text)) And Len(txt.Text) > length Then
        MsgBox title & "에 대한 입력의 최대 길이는 " & CStr(length) & "를 넘을 수 없습니다." & Space(6), 48, "입력 오류"
        txt.SetFocus
        CheckTextBox = False
    End If
    
    CheckTextBox = True
End Function
텍스트박스가 많으니, 위의 프로시저를 만들고, 빠바박 한 화면에 포함된 모든 텍스트박스를 넘겨주면 코드도 깔끔하게 나올 것이란 판단에서였죠.ㅎㅎ
그리고 잘못된 입력 혹은 미입력 시에 나오는 Message box에 대한 문구도 통일 할 수 있으니 더욱 좋고요 ^^

아래와 같이 호출을 해서 사용하면, 호출하는 코드에서도 보기도 편하고요!!
If modDataChecker.CheckTextBox(txtBox1, "입력 텍스트 상자 1", True, 8) = False Then Exit Sub
If modDataChecker.CheckTextBox(txtBox2, "입력 텍스트 상자 2", True, 10) = False Then Exit Sub
If modDataChecker.CheckTextBox(txtBox3, "입력 텍스트 상자 3", True, 10) = False Then Exit Sub
If modDataChecker.CheckTextBox(txtBox4, "입력 텍스트 상자 4", True, 20) = False Then Exit Sub
If modDataChecker.CheckTextBox(txtBox5, "입력 텍스트 상자 5", True, 20) = False Then Exit Sub

하지만, 호출 시에 오류가 발생합니다.

* 타입 미스 매칭 에러... 타입이 다르다고 하네요 .ㅡ.ㅡ;

함수 호출 시에 넘겨주는 txtBox1도 확인해 보면, TextBox 형식이고,
작성한 함수도 위에 보시는 데로 ByRef txt as TextBox.....아무리 봐도 눈으로는 문제가 없어 보입니다.
그러면 당연히 구글링!!
http://www.mrexcel.com/forum/showthread.php?t=53911
위 url에서 바로 확인할 수 있었네요.

컨트롤을 매개변수로 받는 함수(혹은 프로시져) 작성시에는
ByRef txt As msforms.TextBox

로 매개변수를 선언해줘야 합니다.
"msforms.TextBox"
다른 형식으로도 TextBox가 선언이 되어 있나봅니다.
다른 컨트롤 컴포넌트를 사용하지도 않는 데...
다른 컨트롤에 대해 확인하는 함수에도 모두 "msforms"를 붙여줬답니다..ㅎㅎㅎ

쩝;;난감;;; 완성된 코드는 아래에...모 함수 선언만 바뀌었을 뿐입니다;
Public Function CheckTextBox(ByRef txt As msforms.TextBox, ByVal title As String, Optional ByVal isEssencial As Boolean = False, Optional ByVal length As Integer = 1000) As Boolean
    If isEssencial = True And (IsNull(txt.Text) Or txt.Text = "") Then
        MsgBox title & " 입력하세요." & Space(6), 48, "입력 오류"
        txt.SetFocus
        CheckTextBox = False
    End If
    
    If (Not IsNull(txt.Text)) And Len(txt.Text) > length Then
        MsgBox title & "에 대한 입력의 최대 길이는 " & CStr(length) & "를 넘을 수 없습니다." & Space(6), 48, "입력 오류"
        txt.SetFocus
        CheckTextBox = False
    End If
    
    CheckTextBox = True
End Function

내용 자체는 짧은 것입니다만은... 이렇게 길게 포스팅을 한 이유는 "refactoring"에 대한 것입니다.
입력 화면을 개발하는 분들이 많을 텐데요.
짧은 코드라고 하더라도, 저런 형태로 함수를 추출하고, 재사용하게 된다면, 유지보수에 엄청난 도움이 됩니다!!

짧은 코드라고 하더라도, ctrl + c, ctrl + v를 하신다면, 그 즉시 함수로 추출하는 습관을 들이세요 ^^