数字→金額表示用漢数字変換を行うユーザー定義関数 Hit Counter

対象バージョン : 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

補 足

改定履歴


目次へ戻る