การแสดงผลเป็นคำอ่านภาษาอังกฤษ เขียนเมื่อ 2009.07.01 โดย

บทความนี้เป็นตัวอย่าง อย่างๆง่ายๆในการแสดงผลเป็นคำอ่านภาษาอังกฤษ

หลังจากเปิดโปรแกรม Excel แล้วให้กด Alt + F11 เพื่อทำการเปิด Visual Basic Editor ขึ้นมา

ไปที่ Insert แล้วเลือกที่ Module จากนั้นใส่โค๊ดตามข้างล่างนี้
VB
  1. Option Explicit
  2. 'ฟังก์ชั่นหลัก
  3. Function SpellNumber(ByVal MyNumber)
  4.     Dim Dollars, Cents, Temp
  5.     Dim DecimalPlace, Count
  6.     ReDim Place(9) As String
  7.     Place(2) = " Thousand "
  8.     Place(3) = " Million "
  9.     Place(4) = " Billion "
  10.     Place(5) = " Trillion "
  11.     ' คำบอกจำนวนหลักของเลข.
  12.     MyNumber = Trim(Str(MyNumber))
  13.     ' หาตัวเลขทศนิยม.
  14.     DecimalPlace = InStr(MyNumber, ".")
  15.     ' แปลงเลขหลังทศนิยมเป็น cents และตัดให้เหลือจำนวนเต็ม.
  16.     If DecimalPlace > 0 Then
  17.         Cents = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
  18.         MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
  19.     End If
  20.     Count = 1
  21.     Do While MyNumber <> ""
  22.         Temp = GetHundreds(Right(MyNumber, 3))
  23.         If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
  24.             If Len(MyNumber) > 3 Then
  25.                 MyNumber = Left(MyNumber, Len(MyNumber) - 3)
  26.             Else
  27.                 MyNumber = ""
  28.             End If
  29.         End If
  30.         Count = Count + 1
  31.     Loop
  32.     Select Case Dollars
  33.         Case ""
  34.             Dollars = "No Dollars"
  35.         Case "One"
  36.             Dollars = "One Dollar"
  37.         Case Else
  38.             Dollars = Dollars & " Dollars"
  39.     End Select
  40.     Select Case Cents
  41.         Case ""
  42.             Cents = " and No Cents"
  43.         Case "One"
  44.             Cents = " and One Cent"
  45.         Case Else
  46.             Cents = " and " & Cents & " Cents"
  47.     End Select
  48.     SpellNumber = Dollars & Cents
  49. End Function
  50.  
  51. ' แปลงเลขตั้งแต่ 100-999 ไปเป็นตัวอักษร
  52. Function GetHundreds(ByVal MyNumber)
  53.     Dim Result As String
  54.     If Val(MyNumber) = 0 Then Exit Function
  55.         MyNumber = Right("000" & MyNumber, 3)
  56.         ' แปลงเลขที่หลักร้อย
  57.         If Mid(MyNumber, 1, 1) <> "0" Then
  58.             Result = GetDigit(Mid(MyNumber, 1, 1)) & " Hundred "
  59.         End If
  60.         ' แปลงเลขที่หลักสิบและหลักหน่วย
  61.         If Mid(MyNumber, 2, 1) <> "0" Then
  62.             Result = Result & GetTens(Mid(MyNumber, 2))
  63.         Else
  64.             Result = Result & GetDigit(Mid(MyNumber, 3))
  65.         End If
  66.         GetHundreds = Result
  67. End Function
  68.  
  69. ' แปลงค่าตั้งแต่ 10 ถึง 99 ไปเป็นตัวอักษร.
  70. Function GetTens(TensText)
  71.     Dim Result As String
  72.     Result = ""           ' Null out the temporary function value.
  73.     If Val(Left(TensText, 1)) = 1 Then   ' มีค่าตั้งแต่ 10-19...
  74.         Select Case Val(TensText)
  75.             Case 10: Result = "Ten"
  76.             Case 11: Result = "Eleven"
  77.             Case 12: Result = "Twelve"
  78.             Case 13: Result = "Thirteen"
  79.             Case 14: Result = "Fourteen"
  80.             Case 15: Result = "Fifteen"
  81.             Case 16: Result = "Sixteen"
  82.             Case 17: Result = "Seventeen"
  83.             Case 18: Result = "Eighteen"
  84.             Case 19: Result = "Nineteen"
  85.             Case Else
  86.         End Select
  87.     Else
  88.     ' มีค่าระหว่าง 20-99...
  89.         Select Case Val(Left(TensText, 1))
  90.             Case 2: Result = "Twenty "
  91.             Case 3: Result = "Thirty "
  92.             Case 4: Result = "Forty "
  93.             Case 5: Result = "Fifty "
  94.             Case 6: Result = "Sixty "
  95.             Case 7: Result = "Seventy "
  96.             Case 8: Result = "Eighty "
  97.             Case 9: Result = "Ninety "
  98.             Case Else
  99.         End Select
  100.         Result = Result & GetDigit _(Right(TensText, 1))  ' เอาตัวเลขสุดท้ายเพียงหลักเดียว.
  101.     End If
  102.     GetTens = Result
  103. End Function
  104.  
  105. ' แปลงเลขจาก 1 ถึง 9 ไปเป็นตัวอักษร.
  106. Function GetDigit(Digit)
  107.     Select Case Val(Digit)
  108.         Case 1: GetDigit = "One"
  109.         Case 2: GetDigit = "Two"
  110.         Case 3: GetDigit = "Three"
  111.         Case 4: GetDigit = "Four"
  112.         Case 5: GetDigit = "Five"
  113.         Case 6: GetDigit = "Six"
  114.         Case 7: GetDigit = "Seven"
  115.         Case 8: GetDigit = "Eight"
  116.         Case 9: GetDigit = "Nine"
  117.         Case Else: GetDigit = ""
  118.     End Select
  119. End Function

การใช้งานสามารถใช้งานได้ 2 วิธีคือ
  1. การใช้งานโดยตรงเช่น =SpellNumber(32.50)
  2. การอ้างอิงที่ cell เช่น =SpellNumber(A1)
จากนั้นออกจาก Visual Basic Editor ก็จะสามารถใช้ฟังก์ชั่นได้ทันที



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย