| 数字→金額表示用漢数字変換を行うユーザー定義関数 |
|
対象バージョン : 97, 2000, 2002, 2003, 2007
最終更新日 : 2007/02/12
(オリジナル作成日 : 1998/02/01)
概 要
半角数字を"十百千万億兆"の単位を含めた金額表示用漢数字へ変換するユーザー定義関数です。
【例】
1000500 → 百万五百
12345678 → 一千二百三十四万五千六百七十八
構 文
Num2Knj(Number)
解 説
Num2Knj 関数の戻り値は文字列型 (String)です。
Num2Knj 関数では次の引数を使用します。
| 引 数 | 内 容 |
|---|---|
| Number | 15桁までの数字、あるいは数値を返す関数を指定します。 |
引数に数値以外のものがが与えられた場合、この関数は長さ 0 の文字列を返します。
ユーザー定義関数
Public Function Num2Knj(argNumber) As String
Dim varUnit1 As Variant
Dim varUnit2 As Variant
Dim iUnit1 As Integer
Dim iUnit2 As Integer
Dim iPos As Integer
Dim stNumber As String * 16
Dim stKnj As String
Dim stDigit As String
Dim stMoji As String
If Not IsNumeric(argNumber) Then Exit Function
If argNumber = 0 Then
Num2Knj = "〇"
Exit Function
End If
On Error GoTo Num2Knj_Error:
varUnit1 = Array("", "十", "百", "千")
varUnit2 = Array("", "万", "億", "兆")
stNumber = Format(argNumber, "@@@@@@@@@@@@@@@@")
iPos = 16
iUnit1 = 0
iUnit2 = 0
stDigit = Mid(stNumber, iPos, 1)
Do While stDigit <> " "
If stDigit <> "0" Then
If stDigit = "1" Then
If iUnit1 = 0 Or iUnit1 = 3 Then '★ 一(0)と千(3)の単位に "一" を付ける
stMoji = "一"
Else
stMoji = ""
End If
Else
stMoji = Mid("二三四五六七八九", CInt(stDigit) - 1, 1)
End If
stKnj = stMoji & varUnit1(iUnit1) & varUnit2(iUnit2) & stKnj
varUnit2(iUnit2) = ""
End If
iPos = iPos - 1
stDigit = Mid(stNumber, iPos, 1)
iUnit1 = iUnit1 + 1
If iUnit1 = 4 Then
iUnit2 = iUnit2 + 1
iUnit1 = 0
End If
Loop
Num2Knj = stKnj
Exit Function
Num2Knj_Error:
Num2Knj = ""
Exit Function
End Function
補 足
改定履歴