|
作者: 黄河[4326340] 2001-04-29 18:18:18
'思路:
'1、将汉字金额字串截为:亿、万、仟、伯、拾、元、角、分捌个部份
'2、分别处理各部份数据,完成后亿部份乘以100000000,万部份乘以10000,仟部分乘以1000,佰部分乘以100,拾部份乘以10,元部部不处理,角部份乘以0.1,分部份乘以0.01.
'3、把各部份相加并输出
Public Function HZtoALB(strHZ As String) As Double
Dim strTemp As String
Dim lngPosition As Long
Dim lngYi As Long
Dim lngW As Long
Dim lngQ As Long
Dim lngB As Long
Dim lngS As Long
Dim lngY As Long
Dim sngJ As Single
Dim sngF As Single
'截取亿部份
lngPosition = InStr(1, strHZ, "亿")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngYi = JQ(strTemp) * 100000000
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取万部份
lngPosition = InStr(1, strHZ, "万")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngW = JQ(strTemp) * 10000
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取仟部份
lngPosition = InStr(1, strHZ, "仟")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngQ = JQ(strTemp) * 1000
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取佰部份
lngPosition = InStr(1, strHZ, "佰")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngB = JQ(strTemp) * 100
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取拾部份
lngPosition = InStr(1, strHZ, "拾")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngS = JQ(strTemp) * 10
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取元部份
lngPosition = InStr(1, strHZ, "元")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
lngY = JQ(strTemp) * 1
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取角部份
lngPosition = InStr(1, strHZ, "角")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
sngJ = JQ(strTemp) * 0.1
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
'截取分部份
lngPosition = InStr(1, strHZ, "分")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strHZ, 1, lngPosition - 1)
sngF = JQ(strTemp) * 0.01
strHZ = Right(strHZ, Len(strHZ) - lngPosition)
End If
HZtoALB = lngYi + lngW + lngQ + lngB + lngS + lngY + sngJ + sngF
End Function
'计算每一段数值
Public Function JQ(strZ As String) As String
Dim lngPosition As Long
Dim strTemp As String
Dim lngTemp As Long
lngPosition = InStr(1, strZ, "仟")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strZ, lngPosition - 1, 1)
lngTemp = GetArabia(strTemp) * 1000
End If
lngPosition = InStr(1, strZ, "佰")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strZ, (lngPosition - 1), 1)
lngTemp = lngTemp + GetArabia(strTemp) * 100
End If
lngPosition = InStr(1, strZ, "拾")
If Not IsNull(lngPosition) And Not lngPosition = 0 Then
strTemp = Mid(strZ, lngPosition - 1, 1)
lngTemp = lngTemp + GetArabia(strTemp) * 10
End If
strTemp = Right(strZ, 1)
lngTemp = lngTemp + GetArabia(strTemp) * 1
JQ = lngTemp
End Function
'转换汉字数字为阿拉伯数字
Public Function GetArabia(strZ As String) As Long
Select Case strZ
Case "壹"
GetArabia = 1
Case "贰"
GetArabia = 2
Case "叁"
GetArabia = 3
Case "肆"
Ge |
|