- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
- [C#] Hướng dẫn viết ứng dụng chat với Gemini AI Google Winform
Chuyển đổi số thành chữ tiếng anh bằng VB.NET
Bài viết này mình sẽ giới thiệu đến các bạn hàm đọc số thành chữ tiếng Anh, tính năng này rất hữu ích đối với những bạn viết các đơn hàng đọc số bằng tiếng Anh gửi sang nước ngoài trong một số các ứng dụng quản lý.
Trước tiên các bạn khai bào các biến sau:
Dim MangChuSo(10) As String
Dim tu_bon As String
Dim StrSo As String
Dim So_Nhom
Dim Stt_Nhom
Dim Stt_So
Dim So_Phu
Dim soCongthem As Double = 0.0000000000001
Sau khi khai báo các biến trên các bạn viết hàm đổi số thành chữ như sau:
Function DOI_SO_CHU_NHOM_ENG(ByVal Nhom_So, ByVal Stt_Nhom, ByVal So_Nhom) As String
Dim Tram, Chuc, Don_Vi, Tram_Chu, Chuc_Chu, Don_Vi_Chu, Nhom_Chu As String
Nhom_Chu = ""
Tram = Microsoft.VisualBasic.Left(Nhom_So, 1)
Chuc = Nhom_So.Substring(1, 1)
Don_Vi = Microsoft.VisualBasic.Right(Nhom_So, 1)
Tram_Chu = MangChuSo(Val(Tram))
Chuc_Chu = MangChuSo(Val(Chuc))
Don_Vi_Chu = MangChuSo(Val(Don_Vi))
If (Tram <> "0") Then
Nhom_Chu = Nhom_Chu + Tram_Chu + " hundred"
End If
Select Case Trim(Chuc_Chu)
Case "and"
If Trim(Don_Vi_Chu) <> " zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "zezo"
If Trim(Don_Vi_Chu) <> " zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "one"
Select Case Trim(Don_Vi_Chu)
Case "one"
Nhom_Chu = Nhom_Chu + " eleven"
Case "two"
Nhom_Chu = Nhom_Chu + " twelve"
Case "three"
Nhom_Chu = Nhom_Chu + " thirteen"
Case "four"
Nhom_Chu = Nhom_Chu + " fourteen"
Case "five"
Nhom_Chu = Nhom_Chu + " fifteen"
Case "zezo"
Nhom_Chu = Nhom_Chu + " ten"
Case Else
Nhom_Chu = Nhom_Chu + " " + Trim(Don_Vi_Chu) + "teen"
End Select
Case "two"
Nhom_Chu = Nhom_Chu + " twenty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "three"
Nhom_Chu = Nhom_Chu + " thirty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "four"
Nhom_Chu = Nhom_Chu + " forty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "five"
Nhom_Chu = Nhom_Chu + " fifty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "six"
Nhom_Chu = Nhom_Chu + " sixty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "seven"
Nhom_Chu = Nhom_Chu + " seventy"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "eight"
Nhom_Chu = Nhom_Chu + " eighty"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
Case "nine"
Nhom_Chu = Nhom_Chu + " ninety"
If Trim(Don_Vi_Chu) <> "zezo" Then
Nhom_Chu = Nhom_Chu + Don_Vi_Chu
End If
End Select
If (Tram = "0") And (Chuc = 0) And (Don_Vi <> 0) And (Stt_Nhom > 1) Then
Nhom_Chu = Don_Vi_Chu
End If
If (Tram = 0) And (Chuc = 0) And (Don_Vi <> 0) And (So_Nhom = 1) Then
Nhom_Chu = Don_Vi_Chu
End If
Select Case Stt_Nhom
Case 2
Nhom_Chu = Nhom_Chu + " thousand"
Case 3
Nhom_Chu = Nhom_Chu + " milion"
Case 4
Nhom_Chu = Nhom_Chu + " bilion"
Case 5
Nhom_Chu = Nhom_Chu + " thousand"
Case 6
Nhom_Chu = Nhom_Chu + " milion"
End Select
If (Tram = 0) And (Chuc = 0) And (Don_Vi = 0) Then
Nhom_Chu = ""
End If
Return Nhom_Chu
End Function
Private Function DOI_SO_CHU_ENG(ByVal ps_nSo As Double, ByVal ps_sDVT As String, Optional ByVal ps_bSoBon As Boolean = False) As String
Dim So As Double = ps_nSo
Dim Sosaudauphay As String
So = ps_nSo
tu_bon = " four"
If ps_bSoBon Then
tu_bon = "four"
End If
MangChuSo(0) = " zezo"
MangChuSo(1) = " one"
MangChuSo(2) = " two"
MangChuSo(3) = " three"
MangChuSo(4) = " four"
MangChuSo(5) = " five"
MangChuSo(6) = " six"
MangChuSo(7) = " seven"
MangChuSo(8) = " eight"
MangChuSo(9) = " nine"
Dim SoChu As String = ""
If So < 0 Then
So = -So
SoChu = SoChu + " minus"
End If
Sosaudauphay = So - Int(So)
Sosaudauphay += 0.0000000000001
So = Int(So)
If So = 0 Then
SoChu = SoChu + " zezo 0"
Else
StrSo = Trim(Str(So))
If Len(StrSo) Mod 3 = 1 Then
StrSo = "00" + StrSo
End If
If Len(StrSo) Mod 3 = 2 Then
StrSo = "0" + StrSo
End If
So_Nhom = Len(StrSo) / 3
Stt_Nhom = So_Nhom
Stt_So = 0
Do While Stt_So <= (Len(StrSo) - 2) '&&Cho den vi tri cua chu so dau tien cua nhom cuoi cung
So_Phu = StrSo.Substring(Stt_So, 3)
Stt_Nhom = Math.Round((Len(StrSo) - Stt_So + 1) / 3, 0)
If Len(DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)) > 0 Then
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom) + " and"
Else
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)
End If
Stt_So = Stt_So + 3
Loop
End If
SoChu = Microsoft.VisualBasic.Left(Trim(SoChu), Len(Trim(SoChu))) 'Bangvs - Da sua -> 2013.03.05
If Sosaudauphay > 0 + soCongthem Then
SoChu = SoChu + " dot"
Sosaudauphay = Sosaudauphay.ToString.Substring(2, ps_nSo.ToString.Length - So.ToString.Length - 1) 'Cat lay phan sau dau phay)
If Microsoft.VisualBasic.Left(Sosaudauphay, 1) <> "0" Then
'&&Cat nhung so 0 o ben phai do STR() di
Do While Microsoft.VisualBasic.Right(Sosaudauphay, 1) = "0"
Sosaudauphay = Microsoft.VisualBasic.Left(Sosaudauphay, Len(Sosaudauphay) - 1)
Loop
'&&Cong them cac so khong vao dang truoc chuoi de duoc chan cac to hop 3 so
If Len(Sosaudauphay) Mod 3 = 1 Then
Sosaudauphay = "00" + Sosaudauphay
End If
If Len(Sosaudauphay) Mod 3 = 2 Then
Sosaudauphay = "0" + Sosaudauphay
End If
So_Nhom = Math.Round(Len(Sosaudauphay) / 3, 0)
Stt_Nhom = So_Nhom
Stt_So = 0
Do While Stt_So <= (Len(Sosaudauphay) - 2) '&&Cho den vi tri cua chu so dau tien cua nhom cuoi cung
So_Phu = Sosaudauphay.Substring(Stt_So, 3)
Stt_Nhom = Math.Round((Len(Sosaudauphay) - Stt_So + 1) / 3, 0)
SoChu = SoChu + DOI_SO_CHU_NHOM_ENG(So_Phu, Stt_Nhom, So_Nhom)
Stt_So = Stt_So + 3
Loop
Else
Do While Microsoft.VisualBasic.Right(Sosaudauphay, 1) = "0"
Sosaudauphay = Microsoft.VisualBasic.Left(Sosaudauphay, Len(Sosaudauphay) - 1)
Loop
Dim i As Integer = 0
Dim j As Integer = 0
For i = 0 To Len(Sosaudauphay) - 1
j = Sosaudauphay.Substring(i, 1)
SoChu = SoChu + MangChuSo(Val(j))
Next
End If
End If
SoChu = Trim((Microsoft.VisualBasic.Left(SoChu, 1)).ToUpper + SoChu.Substring(1) + ps_sDVT) 'Bangvs - Da sua -> 2013.03.05
Return SoChu
End Function
Sau khi có hàm đọc số trên, có thể một số bạn đọc sẽ không hiểu, nhưng thôi kệ cứ thừa nhận vậy. Đến đây xem như mọi thứ đã xong. Bây giờ sử dụng nó như thế nào? Bạn thiết kế nút trên form như trên hình, giờ ta viết code cho nút như sau:
Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn.Click
Try
Dim Socandoc As Double
If IsNumeric(txtso.Text) Then
Socandoc = CDbl(txtso.Text)
TextBox1.Text = DOI_SO_CHU_ENG(Socandoc, " USD", True)
Else
MsgBox(txtso.Text)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Chúc các bạn thành công!