金额大写的计算方法
金额大写的计算方法
实际应用中一般要用到金额大写转换,一般应符合财务及银行方面的要求。
Public Function Dxje(ByVal Xxje As Decimal, ByVal Bhxx As Boolean) As String
Dim n As Long
Dim aDJE As String
Dim aXJE As String
Dim AA(12) As String
Dim A As String = ""
Dim B As String = ""
On Error Resume Next
Xxje = Math.Round(Xxje * 100) / 100
aXJE = "¥" & Format(Xxje * 100, "0")
For n = 1 To Len(aXJE)
AA(n) = Mid(aXJE, Len(aXJE) - (n - 1), 1)
Next n
For n = Len(aXJE) + 1 To 12
AA(n) = ""
Next n
aXJE = "¥" & Format(Xxje, "0.00")
AA(0) = "0"
aDJE = ""
For n = 12 To 1 Step -1
Select Case AA(n)
Case ""
A = ""
Case "¥"
A = ""
Case "0"
If AA(n - 1) = "0" Or n = 3 Or n = 7 Or n = 11 Then
A = ""
Else
A = "零"
End If
Case "1"
A = "壹"
Case "2"
A = "贰"
Case "3"
A = "叁"
Case "4"
A = "肆"
Case "5"
A = "伍"
Case "6"
A = "陆"
Case "7"
A = "柒"
Case "8"
A = "捌"
Case "9"
A = "玖"
End Select
aDJE = aDJE & A
If A <> "" And A <> "零" Then
Select Case n
Case 12
B = "拾"
Case 11
B = "亿"
Case 10
B = "仟"
Case 9
B = "佰"
Case 8
B = "拾"
Case 7
B = "万"
Case 6
B = "仟"
Case 5
B = "佰"
Case 4
B = "拾"
Case 3
B = "元"
Case 2
B = "角"
Case 1
B = "分"
End Select
Else
B = ""
End If
If n = 11 And aDJE <> "" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "亿零"
Else
B = "亿"
End If
End If
If n = 7 And aDJE <> "" And Microsoft.VisualBasic.Right(aDJE, 1) <> "亿" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "万零"
Else
B = "万"
End If
End If
If n = 7 And aDJE <> "" And Microsoft.VisualBasic.Right(aDJE, 1) = "亿" And AA(6) <> "0" Then
B = "零"
End If
If n = 3 And aDJE <> "" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "元零"
Else
B = "元"
End If
End If
aDJE = aDJE & B
Next n
If Microsoft.VisualBasic.Right(aDJE, 1) = "零" Then
aDJE = Microsoft.VisualBasic.Left(aDJE, Len(aDJE) - 1)
End If
If Microsoft.VisualBasic.Right(aDJE, 1) <> "分" Then
aDJE = aDJE & "整"
End If
If Bhxx Then
Dxje = aDJE & " " & aXJE
Else
Dxje = aDJE
End If
End Function
Dim n As Long
Dim aDJE As String
Dim aXJE As String
Dim AA(12) As String
Dim A As String = ""
Dim B As String = ""
On Error Resume Next
Xxje = Math.Round(Xxje * 100) / 100
aXJE = "¥" & Format(Xxje * 100, "0")
For n = 1 To Len(aXJE)
AA(n) = Mid(aXJE, Len(aXJE) - (n - 1), 1)
Next n
For n = Len(aXJE) + 1 To 12
AA(n) = ""
Next n
aXJE = "¥" & Format(Xxje, "0.00")
AA(0) = "0"
aDJE = ""
For n = 12 To 1 Step -1
Select Case AA(n)
Case ""
A = ""
Case "¥"
A = ""
Case "0"
If AA(n - 1) = "0" Or n = 3 Or n = 7 Or n = 11 Then
A = ""
Else
A = "零"
End If
Case "1"
A = "壹"
Case "2"
A = "贰"
Case "3"
A = "叁"
Case "4"
A = "肆"
Case "5"
A = "伍"
Case "6"
A = "陆"
Case "7"
A = "柒"
Case "8"
A = "捌"
Case "9"
A = "玖"
End Select
aDJE = aDJE & A
If A <> "" And A <> "零" Then
Select Case n
Case 12
B = "拾"
Case 11
B = "亿"
Case 10
B = "仟"
Case 9
B = "佰"
Case 8
B = "拾"
Case 7
B = "万"
Case 6
B = "仟"
Case 5
B = "佰"
Case 4
B = "拾"
Case 3
B = "元"
Case 2
B = "角"
Case 1
B = "分"
End Select
Else
B = ""
End If
If n = 11 And aDJE <> "" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "亿零"
Else
B = "亿"
End If
End If
If n = 7 And aDJE <> "" And Microsoft.VisualBasic.Right(aDJE, 1) <> "亿" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "万零"
Else
B = "万"
End If
End If
If n = 7 And aDJE <> "" And Microsoft.VisualBasic.Right(aDJE, 1) = "亿" And AA(6) <> "0" Then
B = "零"
End If
If n = 3 And aDJE <> "" Then
If AA(n) = "0" And AA(n - 1) <> "0" Then
B = "元零"
Else
B = "元"
End If
End If
aDJE = aDJE & B
Next n
If Microsoft.VisualBasic.Right(aDJE, 1) = "零" Then
aDJE = Microsoft.VisualBasic.Left(aDJE, Len(aDJE) - 1)
End If
If Microsoft.VisualBasic.Right(aDJE, 1) <> "分" Then
aDJE = aDJE & "整"
End If
If Bhxx Then
Dxje = aDJE & " " & aXJE
Else
Dxje = aDJE
End If
End Function
上述代码供参考,实际应用时请自行测试无误后引用。