Function การเปลี่ยนค่าเงินเป็นตัวอักษรภาษาไทย

Function นี้เป็น Function ในการเปลี่ยนค่าเงินเป็นตัวอักษรภาษาไทยคับ

Function ThaiMoney(inp) As String
Dim Buf$(1), t$(9), t1$(2), w$(7)
t$(1) = "หนึ่ง": t1$(1) = "เอ็ด"
t$(2) = "สอง": t1$(2) = "ยี่"
t$(3) = "สาม"
t$(4) = "สี่"
t$(5) = "ห้า"
t$(6) = "หก"
t$(7) = "เจ็ด"
t$(8) = "แปด"
t$(9) = "เก้า"

w$(2) = "สิบ"
w$(3) = "ร้อย"
w$(4) = "พัน"
w$(5) = "หมื่น"
w$(6) = "แสน"
w$(7) = "ล้าน"

On Error GoTo Errchk01
inpt$ = Trim(Str$(inp))
If inpt$ = "" Then
   ThaiMoney = ""
   Exit Function
End If
P% = InStr(inpt$, ".")
If P% = 0 Then
   inpt$ = inpt$ + ".00"
Else
   Select Case Len(inpt$) - P%
                 Case 0
                             inpt$ = inpt$ + "00"
                 Case 1
                             inpt$ = inpt$ + "0"
                 Case Else
                             inpt$ = Mid$(inpt$, 1, P% + 2)
   End Select
End If
n% = 0
For i% = 1 To Len(inpt$)
       P% = InStr("0123456789.", Mid$(inpt$, i%, 1))
       Select Case P%
                     Case 1 To 10
                                 Buf$(n%) = Buf$(n%) + Mid$(inpt$, i%, 1)
                     Case 11
                                 n% = n% + 1
       End Select
Next i%

'สตางค์
Stang$ = ""
n% = Val(Buf$(1))
Select Case Val(Buf$(1))
              Case 0
                         Stang$ = "ถ้วน"
              Case Is < 10
                         Stang$ = t$(n%) + "สตางค์"
              Case Else
                          n% = Val(Left$(Buf$(1), 1))
                          If n% = 1 Then Stang$ = w$(2)
                          If n% = 2 Then Stang$ = t1$(2) + w$(2)
                          If n% > 2 Then
                             Stang$ = t$(n%) + w$(2)
                          End If
                          n% = Val(Right$(Buf$(1), 1))
                          If n% = 1 Then Stang$ = Stang$ + t1$(1)
                          If n% > 1 Then
                             Stang$ = Stang$ + t$(n%)
                          End If
                          Stang$ = Stang$ + "สตางค์"
End Select

'บาท
If Len(Buf$(0)) > 6 Then
   Buf$(1) = Right$(Buf$(0), 6)
   Buf$(0) = Left$(Buf$(0), Len(Buf$(0)) - 6)
Else
   Buf$(1) = Buf$(0)
   Buf$(0) = ""
End If
baht$ = ""
For i% = 0 To 1
       If Buf$(i%) <> "" Then
          Do
                n% = Len(Buf$(i%))
                k% = Val(Left$(Buf$(i%), 1))
                Select Case n%
                              Case 1
                                          If k% = 1 And Val(kk$) > 10 Then baht$ = baht$ + t1$(1)
                                          If k% = 1 And Val(kk$) < 10 Then baht$ = baht$ + t$(1)
                                          If k% > 1 Then
                                             baht$ = baht$ + t$(k%)
                                          End If
                                          If i% = 0 Then
                                             baht$ = baht$ + "ล้าน"
                                          Else
                                             baht$ = baht$ + "บาท"
                                          End If
                              Case 2
                                          If k% = 1 Then baht$ = baht$ + w$(2)
                                          If k% = 2 Then baht$ = baht$ + t1$(2) + w$(2)
                                          If k% > 2 Then
                                            baht$ = baht$ + t$(k%) + w$(2)
                                          End If
                                          kk$ = Buf$(i%)
                              Case Else
                                          If k% > 0 Then baht$ = baht$ + t$(k%) + w$(n%)
                End Select
                Buf$(i%) = Right$(Buf$(i%), Len(Buf$(i%)) - 1)
          Loop Until Buf$(i%) = ""
       End If
Next i%
ThaiMoney = baht$ + Stang$
Exit Function
Errchk01:
ThaiMoney = ""
End Function

Post new comment

คำนวณผลบวกด้านบนแล้วกรอกผลลัพธ์ลงในช่อง เช่น 2 ลบ 1 ให้พิมพ์ 1