- [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
- Hướng dẫn khóa file bằng nhiều process id, không cho xóa tập tin
- Hướng dẫn cách tạo Product Id cho ứng dụng phần mềm XXXXX-XXXXX-XXXXX-XXXXX
- [SQLSERVER] Hướng dẫn tạo script sql từ ứng dụng Sqlserver management Studio
- [C#] Hướng dẫn sử dụng thư viện AutoITx lấy id và password Ultraviewer trên winform
- [VB.NET] Hướng dẫn lấy thông tin tài khoản đăng nhập windows và khởi động lại ứng dụng ở chế độ Administrator
- [C#] Sử dụng thư viện Polly gửi lại request api khi request bị lỗi hay rớt mạng
- [DEVEXPRESS] Chia sẻ source code tạo báo cáo report in tem nhãn label trên C# winform
- [DEVEXPRESS] Hướng dẫn vẽ biểu đồ Bar Chart trên Winform
- [C#] Tạo form đăng nhập và đăng ký với hiệu ứng Sliding Animation Effect
- [C#] Hướng dẫn tạo thanh toán đơn hàng qua mã vạch VietQR sử dụng API PayOS hoàn toàn miễn phí
- [C#] Hướng dẫn ghi log ra RichTextBox giống Console trên Winform sử dụng thư viện Serilog
- [C#] Hướng dẫn cách tạo mã QR Code trên file Excel
- [VB.NET] Gởi tin nhắn và file đính kèm qua ứng dụng gởi tin nhắn Whats App
- [C#] Viết ứng dụng Auto Fill list Textbox from clipboard Winform
- [TOOL] Chia sẻ phần mềm thay đổi thông tin cấu hình máy tính
- [C#] Hướng dẫn Export dữ liệu ra file Microsoft Word Template
- [C#] Chia sẻ source code tool kiểm tra domain website
- [C#] Hướng dẫn tạo file PDF sử dụng thư viện QuestPDF
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!