Public Function RegNoCheck(sID As String) As Boolean
Dim Weight As String '1~12자리까지 가중치
Dim Total As Integer
Dim Chk As Integer
Dim Rmn As Integer
Dim i As Integer
Dim dt As Integer
Dim wt As Integer
RegNoCheck= False
sID = Trim$(sID)
If sID = "" Then Exit Function '공백인지 확인합니다.
If Mid$(sID, 7, 1) = "-" Then sID = Left$(sID, 6) & Mid$(sID, 8)
If Len(sID) <> 13 Then Exit Function '13자리인지 확인합니다.
Chk = Val(Right$(sID, 1))
Weight = "234567892345" '가중치 값 대입
Total = 0
For i = 1 To 12
dt = Val(Mid$(sID, i, 1)) '주민등록번호
wt = Val(Mid$(Weight, i, 1)) '가중치
Total = Total + (dt * wt)
Next i
Rmn = 11 - (Total Mod 11)
If Rmn > 9 Then Rmn = Rmn Mod 10
RegNoCheck = IIf(Rmn = Chk, True, False)
End Function
Public Function TaxNoCheck(ByVal strNo As String) As Boolean
Const COMPNO_LEN As Byte = 10 ' 사업자번호의 길이
Dim blnRet As Boolean ' 결과값
Dim aryNo(COMPNO_LEN) As Byte ' 문자열 배열
Dim bytCntNo As Byte ' 루프변수
Dim intMod As Integer ' 나머지숫자
Dim intInt As Integer ' 소수점이하 절사값
Dim intSub As Integer ' 계산결과
If (Len(Trim(strNo)) = COMPNO_LEN) Then ' 사업자번호의 길이가 10자리라면
For bytCntNo = 1 To COMPNO_LEN ' 루프를 돌면서 바이트배열을 만든다
aryNo(bytCntNo) = Val(Mid(strNo, bytCntNo, 1))
Next bytCntNo
intMod = ((aryNo(1) * 1) + _
(aryNo(2) * 3) + _
(aryNo(3) * 7) + _
(aryNo(4) * 1) + _
(aryNo(5) * 3) + _
(aryNo(6) * 7) + _
(aryNo(7) * 1) + _
(aryNo(8) * 3)) Mod COMPNO_LEN ' 나머지 숫자를 구한다
intInt = Int(aryNo(9) * 5 / COMPNO_LEN) ' 소숫점이하를 절사하여 구한다
intSub = (aryNo(9) * 5) - (intInt * 10) ' 계산결과를 구한다
intSub = (intMod + intInt + intSub) Mod 10
intSub = IIf((intSub = 0), 10, intSub) ' 체크섬을 확인하여 진위를 판별한다
blnRet = (aryNo(COMPNO_LEN) = (COMPNO_LEN - intSub))
Else
blnRet = False
End If
TaxNoCheck= blnRet ' 결과를 대입한다
End Function

