3 Cách Gõ Tiếng Việt Trong VBA Excel
Cập nhật mới nhất ngày 01 tháng 07 năm 2022: Như các bạn đã biết, Excel là một phần mềm nằm trong bộ Microsoft Office được Microsoft là một công ty của Mỹ thiết kế. Cùng với sự phổ biến mạnh mẽ của phần mềm trên toàn thế giới thì các nhà phát triển cũng không ngừng thêm các ngôn ngữ vào phần mềm này. Tuy nhiên, trong VBA thì vẫn chưa thể nhận dạng tiếng Việt. Vậy nên, trong bài viết ngày hôm nay mình sẽ hướng dẫn các bạn 3 cách để gõ tiếng Việt trong VBA.Như các bạn đã biết, Excel là một phần mềm nằm trong bộ Microsoft Office được Microsoft là một công ty của Mỹ thiết kế. Cùng với sự phổ biến mạnh mẽ của phần mềm trên toàn thế giới thì các nhà phát triển cũng không ngừng thêm các ngôn ngữ vào phần mềm này. Tuy nhiên, trong VBA thì vẫn chưa thể nhận dạng tiếng Việt. Vậy nên, trong bài viết ngày hôm nay mình sẽ hướng dẫn các bạn 3 cách để gõ tiếng Việt trong VBA.
NỘI DUNG
Tạo ô phụ có tiếng Việt
Với cách thứ nhất, bước đầu tiên các bạn đơn giản chỉ cần ghi nội dung tiêu đề và nội dung thông báo vào hai ô khác nhau bất kì.
Tiếp theo các bạn mở hộp thoại Visual Basic bằng cách ở thẻ Developer chọn Visual Basic. Đây chính là nơi chúng ta sẽ thao tác chính các bước tiếp theo.
Sau khi hộp thoại trên hiện ra, các bạn ấn chuột phải vào chữ Sheet1 (đây là tên sheet hiện tại của các bạn, nếu bạn không thay đổi thì tên mặc định là Sheet1) trong mục Project nằm ở phía bên trái, chọn Insert rồi chọn Module để tạo một module mới. Từ đây chúng ta sẽ viết code trực tiếp tại module này.
Đầu tiên các bạn nhập Sub goTiengViet() (goTiengViet là tên do mình đặt còn các bạn muốn đặt sao cũng được hết, không có vấn đề gì cả) để khai báo tên của hàm này, khi nhập xong và ấn Enter thì hệ thống sẽ tự phát sinh thêm dòng End Sub ở bên dưới. Sau đó chúng ta sẽ khai báo hai biến tieude và noidung thuộc kiểu chuỗi (string) chính là nội dung tiêu đề và nội dung thông báo cần lấy. Tiếp theo là đoạn code chính của chúng ta, ta sẽ gán tieude bằng với giá trị hiện tại của ô C4 (ô chứa nội dung tiêu đề trong sheet) và gán noidung với giá trị hiện tại của ô C5. Dòng cuối cùng sẽ là câu lệnh dùng để hiển thị thông báo, các bạn cứ nhập theo mình là được.
Đoạn code:
tieude = ActiveSheet.Range("C4").Value
noidung = ActiveSheet.Range("C5").Value
Application.Assistant.DoAlert tieude, noidung, msoAlertButtonOK, msoAlertIconInfo, 0, 0, 0
Sử dụng phép nỗi chuỗi và hàm Chrw
Với cách hai thì chúng ta sẽ thay đổi đoạn code trên một chút và không sử dụng giá trị từ hai ô C4, C5 mà sử dụng trên phần mềm Word. Trước tiên các bạn mở Word lên rồi ở thẻ Developer chọn Record Macro. Ở hộp thoại hiện lên, tại mục Macro name các bạn hãy nhập một tên dễ gợi nhớ nhé.
Tiếp theo các bạn nhập nội dung tiêu đề vào phía dưới như thao tác đánh văn bản bình thường. Sau khi ghi xong các bạn ấn vào nút Stop Recording rồi ấn Visual Basic.
Ở hộp thoại hiện lên, các bạn ấn vào Normal, Modules rồi chọn NewMacros. Lúc này ngay bên phải sẽ là đoạn code mà chúng ta cần sao chép để gán vào biến tieude trong module bên Excel. Các bạn lưu ý chỉ sao chép từ đoạn sau dấu bằng nhé.
Làm hoàn toàn tương tự với phần nội dung, sau khi xong chúng ta sẽ được kết quả như hình bên dưới. Các bạn lưu ý đối với cách làm này thì dòng cuối cùng các bạn vẫn giữ nguyên và không thay đổi nhé.
Đoạn code:
tieude = "Tiêu " & ChrW(272) & "ê" & ChrW(768)
noidung = ChrW(272) & "ây la" & ChrW(768) & " phâ" & ChrW( _
768) & "n nô" & ChrW(803) & "i dung cu" & ChrW(777) & "a thông ba" & ChrW _
(769) & "o"
Sử dụng hàm để chuyển chuỗi nhập vào thành tiếng Việt
Bạn tải file code tại đây
Đối với cách thứ 3, chúng ta sẽ dùng thêm một hàm bên ngoài để có thể chuyển đổi chuỗi nhập vào thành tiếng Việt (file hàm này mình sẽ đính kèm trong bài viết). Các bạn sao chép toàn bộ hàm này rồi dán ở bên dưới chữ End Sub.
Tiếp theo với biến tieude và noidung chúng ta sẽ nhập như lúc chúng ta viết tiếng Việt có dấu nhưng không bật bộ gõ Tiếng Việt như hình bên dưới (ví dụ như tên sẽ ghi là teen). Ở dòng dưới cùng lúc này tham số đầu tiên của hàm DoAlert sẽ là giá trị trả về của hàm UniConvert với tham số đầu tiên là giá trị biến tieude và tham số thứ 2 là kiểu gõ (bao gồm Telex và VNI, các bạn chọn đúng kiểu rồi nhập vào thôi). Các bạn cũng là tương tự với biến noidung, những phần sau thì không cần thay đổi.
Đoạn code:
tieude = "Tieeu DDeef"
noidung = "DDaay laf phaafn nooji dung cura thoong baso"
Application.Assistant.DoAlert UniConvert(tieude, "Telex"), UniConvert(noidung, "Telex"), msoAlertButtonOK, msoAlertIconInfo, 0, 0, 0
Với cả 3 cách trên thì kết quả chúng ta thu được sẽ như hình bên dưới. Chúc các bạn thực hành tốt!
Video hướng dẫn thực hiện
CHO ĐIỂM BÀI VIẾT NÀY