Gõ tiếng việt trong code VBA một cách đơn giản

  • Thread starter Thread starter handboy
  • Ngày gửi Ngày gửi
Liên hệ QC

handboy

Thành viên mới
Tham gia
18/6/09
Bài viết
1
Được thích
7
VBA đã hỗ trợ unicode trên các control, tuy nhiên việc nhập tiếng việt trong code để đưa vào excel vẫn thật sự khó khăn. Có rất nhiều cách giải quyết khác nhau mà mình cũng đã từng thử trong đó việc sử dụng bảng mã unicode mà VBA hỗ trợ là dễ dàng nhưng biết được mã ascii của các ký tự việt thì khá lâu.
Mình vẫn hay dùng chương trình sử dụng đoạn code này để có thể đưa tiếng việt vào ô mỗi khi lập trình excel. Bạn có thể tạo 1 form 2 textbox, sử dụng event textbox1_change() có trong VBA
PHP:
Private Sub TextBox1_Change()
 For i = 1 To Len(TextBox1)
    If i = 1 Then
        If AscW(TextBox1) > 127 Then
            TextBox2.Text = "ChrW(" + CStr(AscW(TextBox1)) + ")"
        Else
            TextBox2.Text = Chr(34) + Mid(TextBox1, i, 1) + Chr(34)
        End If
    Else
        If AscW(Mid(TextBox1, i, 1)) > 127 Then
             TextBox2.Text = TextBox2.Text + "+" + "ChrW(" + _
                   CStr(AscW(Mid(TextBox1, i, 1))) + ")"
        Else
             If AscW(Mid(TextBox1, i - 1, 1)) < 127 Then
                   TextBox2.Text = Left(TextBox2.Text, Len(TextBox2.Text) - 1) + _
                          Mid(TextBox1, i, 1) + Chr(34)
             Else
                   TextBox2.Text = TextBox2.Text + "+" + Chr(34) + _
                          Mid(TextBox1, i, 1) + Chr(34)
             End If
        End If
    End If
 Next
End Sub

Khi đó các bạn nhập vào textbox1 là: Tiếng việt Unicode thì textbox2 sẽ hiện ra "Ti"+ChrW(7871)+"ng vi"+ChrW(7879)+"t Unicode"
Các bạn có thể lấy ngay dòng chữ này vào VBA Project đang cần sử dụng tiếng việt
application.cells(5,4) = "Ti"+ChrW(7871)+"ng vi"+ChrW(7879)+"t Unicode" thì ô đó sẽ hiển thị được tiếng việt

Các bạn có thể test thử trong VBA (nếu là VB6 thì textbox lại ko hỗ trơ unicode), ngoài ra có thể tạo tự động chạy mỗi khi mở excel có chứa chương trình này bằng cách thêm một module
Mã:
Private sub auto_open()
 userform1.show 'Neu form ban su dung la ten la useform1
End sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tôi nghĩ cái này đơn giản hơn:
Mã:
=Vn3_to_Uni("Chuỗi kí tự nhập theo bảng mã TCVN3")
 
Upvote 0
@ handboy mình đã thử cách của bạn với bảng tính OK. Bạn có cách nào hiển thị tiếng việt cho Msgbox không ?. Nếu có thì chia sẻ tiếp cho anh em nha. Thanks !
 
Upvote 0
@ handboy mình đã thử cách của bạn với bảng tính OK. Bạn có cách nào hiển thị tiếng việt cho Msgbox không ?. Nếu có thì chia sẻ tiếp cho anh em nha. Thanks !
Bài toán này đã từng bàn rất nhiều lần trên diển đàn rồi anh à!
Gõ tiếng Việt trong cửa sổ VBE là 1 chuyện, cho nó hiển thị vào MsgBox lại là chuyện khác ---> Khó khăn hơn rất nhiều... Và thông thường phải có sự hổ trợ của các hàm API
Anh có thể tham khảo tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=3049
 
Upvote 0
Cách này chỉ đối phó với 1 số ít câu thôi, nếu nhiều câu thì ngồi gõ ốm mất.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom