Hỏi về font trong macro

Liên hệ QC

khanhhoan

Thành viên chính thức
Tham gia
15/4/08
Bài viết
99
Được thích
36
Nghề nghiệp
Sinh viên
Em mới học VBA có điều này không biết mong các bác chỉ cho. Em không thể viết được tiếng Việt có dấu trong macro, hơn nữa khi em ghi lại một macro sau đó copy phần lệnh rồi dán vào code của file excel mới thì khi chạy macro thì lại bị lỗi font, hơn nữa đáng lẽ ra dòng "số công nhân" phải ở F4 thì nó lại bị nhảy về A1.

hinh1.jpg

Khi ghi marco


vidu2.png

khi copy code sang file excel khác

Mong các bác giải đáp. Em có gửi file đính kèm (dó up mãi lên GPE không được nên đành up host khác).
http://download146.mediafire.com/rvmmmfmvd4dg/lmi0mymmyym/vidu.zip
 
1. Font trong VBA:
VBA không chịu chơi với tiếng Việt có dấu Unicode. Nó có thể chơi với tiếng Việt bảng mã TCVN3 hoặc VNI for Window

2. Chạy ô:
Câu lệnh đầu tiên là:
PHP:
ActiveCell.FormulaR1C1 = "S? công nhân"

ActiveCell là ô hiện hành, nên sẽ gán chuỗi "S? công nhân" vào ô hiện hành (ô chọn).

Câu trên muôn gán cho ô F4 thì:

- Cách 1: chọn ô F4 trước:

PHP:
Range("F4").Select
ActiveCell.FormulaR1C1 = "S? công nhân"

- Cách 2: Gán trực tiếp

PHP:
Range("F4") = "S? công nhân"
Range("F5") = "S? quản lý"
Range("F6") = "S? trưởng phòng"

(Có thể bỏ qua cái .FormulaR1C1 nếu gán 1 giá trị, không phải 1 công thức tính toán)
 
Upvote 0
font "Times New Roman" có mã ASCII trên 255 nên không thể nhập nó trong mã nguồn của Macro. Nếu ai có điều kiện đề xuất với Microsoft sửa lại yếu điểm này.

Nếu bạn vẫn muốn dùng Macro để nạp dữ liệu theo font "Times New Roman" thì có thể sau đây là 1 cách dùng tạm:
- Trên 1 Sheet, có sẵn các dữ liệu theo font "Times New Roman".
- Chương trình lấy dữ liệu có sẵn đó để dùng.

Ví dụ ô A1 của Sheet1 có nội dung là "Số Công nhân"
thì chương trình lấy dữ liệu đó vào biến a$ là
a$ = sheet1.[a1]
Khi cần thì lệnh sau sẽ gán vô ô c5 của Sheet2
sheet2.[c5] =a$.

Chú ý: các ví dụ của tôi làm trên Excel 2003.
Hi vọng bạn thành công
 
Upvote 0
Nếu như thế thì khi em muốn viết font "Times New Roman" thì phải làm thế nào?
Có 3 cách:

- Cách 1: Dùng ChrW(số code của ký tự) thay vì gõ trực tiếp, cách này phải nhớ trên trăm con số, điên luôn.

- Cách 2: Gõ sẵn nội dung mong muốn lên 1 ô nào đó, rồi gán giá trị ô này bằng ô kia. Cách này bị hạn chế là nếu đã gõ trên sheet được ở ô này, thì gõ ở ô kia phứt đi, đúng không? Nhưng vẫn hữu dụng nếu dùng code để hiện thông báo tiếng Việt, để nhập dữ liệu hàng loạt cùng 1 nội dung, ...

- Cách 3: Dùng font VNI hoặc TCVN3 trong VBA, rồi dùng 1 hàm khác chuyển mã về Unicode.
 
Upvote 0
Nếu như thế thì khi em muốn viết font "Times New Roman" thì phải làm thế nào?

Ngoài ra còn một cách để nhập trực tiếp Unicode trên VBA, đó là viết một hàm chuyển đổi dạng như sau :

UniVBA("Nguye64n Ca3nh Hoa2ng Danh") = "Nguyễn Cảnh Hoàng Danh"

Như thế bạn sẽ nhập liệu dẽ dàng hơn mà không phải nhớ các con số trong hàm Chrw$(...)

Chi tiết về hàm UniVBA bạn xem trong link sau nha
http://www.giaiphapexcel.com/forum/showthread.php?t=17469
 
Upvote 0
Web KT

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

Back
Top Bottom