แปลงตัวเลขเป็นภาษาอังกฤษ ทำไงครับ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 311   10
URL.หัวข้อ / URL
แปลงตัวเลขเป็นภาษาอังกฤษ ทำไงครับ

แปลงตัวเลขเป็นภาษาอังกฤษ ทำไงครับ อยากได้โค้ดใครมีช่วยบอกหน่อยนะ
เช่น 140.00 จะได้เป็น ONE HUNDRED FORTY ONLY
ใช้ access 97 อยู่

10 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R05500
เคยคุยกันไว้หลายครั้ง ลองค้นหาดูซิค่ะ
2 @R05501
ลองใช้คำนี้ค้นดูเด้อครับ " BahtText"
**********
http://www.thai-access.com/suphap.php?topic_id=1100
3 @R05515
< เอา function นี้ ไปใช้ได้เลย พี่ชาย />

Function English (ByVal N As Currency) As String
Const Thousand = 1000@
Const Million = Thousand * Thousand
Const Billion = Thousand * Million
Const Trillion = Thousand * Billion

If (N = 0@) Then English = "zero": Exit Function

Dim Buf As String: If (N < 0@) Then Buf = "negative " Else Buf = ""
Dim Frac As Currency: Frac = Abs(N - Fix(N))
If (N < 0@ Or Frac <> 0@) Then N = Abs(Fix(N))
Dim AtLeastOne As Integer: AtLeastOne = N >= 1

If (N >= Trillion) Then
Debug.Print N
Buf = Buf & EnglishDigitGroup(Int(N / Trillion)) & " trillion"
N = N - Int(N / Trillion) * Trillion ' Mod overflows
If (N >= 1@) Then Buf = Buf & " "
End If

If (N >= Billion) Then
Debug.Print N
Buf = Buf & EnglishDigitGroup(Int(N / Billion)) & " billion"
N = N - Int(N / Billion) * Billion ' Mod still overflows
If (N >= 1@) Then Buf = Buf & " "
End If

If (N >= Million) Then
Debug.Print N
Buf = Buf & EnglishDigitGroup(N \ Million) & " million"
N = N Mod Million
If (N >= 1@) Then Buf = Buf & " "
End If

If (N >= Thousand) Then
Debug.Print N
Buf = Buf & EnglishDigitGroup(N \ Thousand) & " thousand"
N = N Mod Thousand
If (N >= 1@) Then Buf = Buf & " "
End If

If (N >= 1@) Then
Debug.Print N
Buf = Buf & EnglishDigitGroup(N)
End If

If (Frac = 0@) Then
Buf = Buf & " exactly"
ElseIf (Int(Frac * 100@) = Frac * 100@) Then
If AtLeastOne Then Buf = Buf & " and "
Buf = Buf & Format$(Frac * 100@, "00") & "/100"
Else
If AtLeastOne Then Buf = Buf & " and "
Buf = Buf & Format$(Frac * 10000@, "0000") & "/10000"
End If

English = Buf
End Function

' Support function to be used only by English()
Private Function EnglishDigitGroup (ByVal N As Integer) As String
Const Hundred = " hundred"
Const One = "one"
Const Two = "two"
Const Three = "three"
Const Four = "four"
Const Five = "five"
Const Six = "six"
Const Seven = "seven"
Const Eight = "eight"
Const Nine = "nine"
Dim Buf As String: Buf = ""
Dim Flag As Integer: Flag = False

'Do hundreds
Select Case (N \ 100)
Case 0: Buf = "": Flag = False
Case 1: Buf = One & Hundred: Flag = True
Case 2: Buf = Two & Hundred: Flag = True
Case 3: Buf = Three & Hundred: Flag = True
Case 4: Buf = Four & Hundred: Flag = True
Case 5: Buf = Five & Hundred: Flag = True
Case 6: Buf = Six & Hundred: Flag = True
Case 7: Buf = Seven & Hundred: Flag = True
Case 8: Buf = Eight & Hundred: Flag = True
Case 9: Buf = Nine & Hundred: Flag = True
End Select

If (Flag <> False) Then N = N Mod 100
If (N > 0) Then
If (Flag <> False) Then Buf = Buf & " "
Else
EnglishDigitGroup = Buf
Exit Function
End If

'Do tens (except teens)
Select Case (N \ 10)
Case 0, 1: Flag = False
Case 2: Buf = Buf & "twenty": Flag = True
Case 3: Buf = Buf & "thirty": Flag = True
Case 4: Buf = Buf & "forty": Flag = True
Case 5: Buf = Buf & "fifty": Flag = True
Case 6: Buf = Buf & "sixty": Flag = True
Case 7: Buf = Buf & "seventy": Flag = True
Case 8: Buf = Buf & "eighty": Flag = True
Case 9: Buf = Buf & "ninety": Flag = True
End Select

If (Flag <> False) Then N = N Mod 10
If (N > 0) Then
If (Flag <> False) Then Buf = Buf & "-"
Else
EnglishDigitGroup = Buf
Exit Function
End If

'Do ones and teens
Select Case (N)
Case 0: ' do nothing
Case 1: Buf = Buf & One
Case 2: Buf = Buf & Two
Case 3: Buf = Buf & Three
Case 4: Buf = Buf & Four
Case 5: Buf = Buf & Five
Case 6: Buf = Buf & Six
Case 7: Buf = Buf & Seven
Case 8: Buf = Buf & Eight
Case 9: Buf = Buf & Nine
Case 10: Buf = Buf & "ten"
Case 11: Buf = Buf & "eleven"
Case 12: Buf = Buf & "twelve"
Case 13: Buf = Buf & "thirteen"
Case 14: Buf = Buf & "fourteen"
Case 15: Buf = Buf & "fifteen"
Case 16: Buf = Buf & "sixteen"
Case 17: Buf = Buf & "seventeen"
Case 18: Buf = Buf & "eighteen"
Case 19: Buf = Buf & "nineteen"
End Select

EnglishDigitGroup = Buf
End Function
4 @R05521
เฮ้อ ... คนเราเนี่ย
Code ก็เขียนให้แล้ว ยังไม่มาดูอีกนะ

เศร้าใจ..!
5 @R05530
ขอโทษครับพอดีไม่สบายกระทันหัน เลยไม่ได้เข้าเว็บดู พอค่อยยังชั่วก็รีบมาดูเมื่อกี้นี้ อย่าน้อยใจไปเลยนะ ท่านผู้มีพระคุณ
6 @R05531
แนบไฟล์ให้ช่วยทำให้ดูหน่อยนะ ทำแล้วมันมี error
7 @R05532
ก็คัดลอก Function ทั้งหมดของคุณ JZ ไปใว้ที่ Modules(โมดูล)
เวลาจะใช้ก็
ใน Control Source ของ Text1 ก็ให้พิมพ์ =English([Amount]) เข้าไป
จากนั้นก็ Save แล้วก็ทดลองใช้ ครับ
8 @R05533
ผมก็ลองตามที่บอกแล้ว มันไม่ได้ ช่วยหน่อยนะ
9 @R05540
Try Again,

10 @R05544
ได้แล้วครับ ช่วยอธิบายสาเหตุให้หน่อยได้ไหมครับ หรือเพราะว่าผมตั้งชื่อFunction ไม่ถูกต้อง

ขอบคุณนะครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0655s