Cách chọn font tiếng việt cho hộp nhập input

Liên hệ QC

Hoacomay96

Thành viên chính thức
Tham gia
18/3/08
Bài viết
96
Được thích
8
Các anh cho em hỏi, trong code của em có dòng mã inputbox("Nhập tên người lập bảng") khi chạy code. Nhưng khi em nhập vào hộp nhập này thì không có font tiếng việt. Vậy các anh chỉ cho em cách chọn font tiếng việt cho hộp "inputbox" này vơí.
 
Ngoai Desktop >>Mở properties>>Appearance>>Advanced>>..CAC LUA CHON>> chon Font MS Sent serif, hoac Font khac
 
Upvote 0
Hình như inputbox không hỗ trợ tiếng Việt!?
 
Upvote 0
hiện font tiếng việt

Nhung em muốn dùng code để thuc hiện lệnh đó mà không cần chỉnh ỏ Win. các anh tìm giúp em vói.
 
Upvote 0
Nhung em muốn dùng code để thuc hiện lệnh đó mà không cần chỉnh ỏ Win. các anh tìm giúp em vói.

hic, em hỏi thế này thì... khó đây.

Default font của cái ô textbox trong cái Input box đó là MS Sans Serif (hoặc là font mặc định nào đó của Windows đã thiết lập trước). Và nên nhớ là font "MS Sans Serif" mặc định của Windows ko phải là font hỗ trợ TCVN3 đâu nhé, mấy cái bộ cài đặt phần mềm ở VN thường copy đè lên font này thì mới là font hỗ trợ TCVN3. (hoặc là redirect trong registry sang 1 đường dẫn chứa font MS Sans Serif đã hỗ trợ TCVN3)

Input box, msgbox là 1 window và các thuộc tính của đối tượng đó được mặc định thiết lập trong Windows. Mỗi khi ta gọi msgbox, inputbox tức là ra đã create 1 instant của đối tượng window đó.

Để có thể "thay đổi" thuộc tính của các objects nằm trên window's instant đó trong VB(A) thì phải subclass và Hook để can thiệp vào từng object trên cái window đó.

Nói chung, với cách em hỏi như trên thì em sẽ ko làm được (và nếu người khác có giải quyết cho em) thì cũng hơi khó áp dụng vì vấn đề này là phải hiểu từ gốc dễ, nguyên nhân của vấn đề cơ.
 
Lần chỉnh sửa cuối:
Upvote 0
Tại sao không dùng Textbox trên Form mà lại dùng Input box chi cho mệt vậy. Tuy dung lượng có lớn hơn thật nhưng nhẹ cái đầu hơn so với cách trên đúng không?
 
Lần chỉnh sửa cuối:
Upvote 0
Tại sao không dùng Textbox trên Form mà lại dùng Input box chi cho mệt vậy. Tuy dung lượng có lớn hơn thật nhưng nhẹ cái đầu hơn so với cách trên đúng không?

Đúng vậy, tuy nhiên dùng form ngoài có 1 vấn đề tương đối nhỏ là vấn đề focus. Khi gọi 1 form mới thì chuyển focus sang form đó, còn khi call msgbox thì nó ko chuyển focus lên cái msgbox đó.

Anyway, nếu ko điều khiển được msgbox của hệ thống thì nên dùng form riêng. (thiết kế 1 cái mymsgbox.dll là tốt nhất)
 
Upvote 0
em chỉ biết thiết kế form còn không biết lấy thông tin đã nhập trên hộp các textbox đó như thế nào để viết vào code . các anh chỉ em với
 
Upvote 0
em chỉ biết thiết kế form còn không biết lấy thông tin đã nhập trên hộp các textbox đó như thế nào để viết vào code . các anh chỉ em với
Sao lại xen ngang nội dung của topic vậy bác, hi hi

Ví dụ : lấy giá trị của Textbox1 gán vào ô A1
Range("A1").Value = Textbox1.Value

TDN
 
Upvote 0
Sao lại xen ngang nội dung của topic vậy bác, hi hi

Ví dụ : lấy giá trị của Textbox1 gán vào ô A1
Range("A1").Value = Textbox1.Value

TDN

Ý của Hoacomay96 không phải như vậy đâu Phước ơi mà là như vầy nè
Mã:
Private Sub UserForm_Initialize()
    Me.TextBox1.Text = "Em có yêu anh?"
End Sub
Tức là mỗi khi mở form thì giá trị trong textbox luôn hiện dòng chữ như trên
Thân
 
Upvote 0
Em cảm ơn các huynh đã nhiệt tình chỉ bảo, các huynh vui tính quá...Hi hi. Em chưa biết về tạo form. Em có 1 formThongtin để nhập các thông tin vầ bảng tính gồm các 9 textbox để nhập tên người, thời gian, địa điểm giao hàng. em xin hỏi các huynh mấy vấn đề sau:
1- làm sao để Form tự động load khi mở file
2- các thông tin đã nhập lần trước còn lưu lại trên hộp textbox
3- em có các macro khác muốn lấy thông tin từ các hộp textbox của form này
4- trong nút lệnh command1 em có dùng các lệnh If , elseif. nhưng có 1 elseif em dùng như sau:
elseif txtten1.text = "" or txtten2.text = "" or txtten3.text = "" or txtten4.text = "" or txtten5.text = "" or txtten6.text = "" or then
msgbox " Ban chua nhap ten nguoi lap bang"
thì code báo không dúng. Vậv lệnh or dùng nhiều như vậy có đúng không ?
Các anh giúp em với nhé. em xin cảm ơn rất nhiều....
 
Upvote 0
1- làm sao để Form tự động load khi mở file
2- các thông tin đã nhập lần trước còn lưu lại trên hộp textbox
3- em có các macro khác muốn lấy thông tin từ các hộp textbox của form này
4- trong nút lệnh command1 em có dùng các lệnh If , elseif. nhưng có 1 elseif em dùng như sau:
elseif txtten1.text = "" or txtten2.text = "" or txtten3.text = "" or txtten4.text = "" or txtten5.text = "" or txtten6.text = "" or then
msgbox " Ban chua nhap ten nguoi lap bang"


1- Bạn chép đoạn code này vào "This workbook" trong màn hình B=VBA:
Mã:
Private Sub Workbook_Open()
     frm_UserForm.Show
End Sub


2. Xử lý khi đóng form lại:
Khi xử lý đóng form lại bạn thêm một đoạn nữa như sau:
Mã:
Me.TextBox.Value=Me.TextBox


3.Muốn thực hiện macro lấy từ textbox này, trước tiên bạn phải cho mở form chứ textbox này lên trong suốt quá trình chạy macro, cách khai báo như sau: =[Tên form].[tên textbox]
Ví dụ:
Mã:
Sub Test()
a=2
If a=1 then
exit sub
else
b=frm_UserForm.TextBox
a=mgsbox(b,,"ViDu")
End If
End Sub

4. cú pháp của bạn sai ở chữ OR kế bên chữ THEN, không có cú pháp IF ...... OR THEN ...... mà chỉ có IF .... or .... or ..... then
Theo mình thì trước khi viết If ... then nhiều điều kiện bạn nên cho tất cả vào dấu () như thế này:
<If () then> sau đó mới gõ điều kiện vào giữa hai dấu ngoặc đơn đó.
 
Upvote 0
Cảm ơn Sư phụ Ca dafi đã nhiệt tình chỉ bảo.Kiến thức về VBA mênh mông quá.Với câu lệnh if .... then có nhiều or ở giữa thì phải để trong () hả sư phụ ?
 
Upvote 0
Cảm ơn Sư phụ Ca dafi đã nhiệt tình chỉ bảo.Kiến thức về VBA mênh mông quá.Với câu lệnh if .... then có nhiều or ở giữa thì phải để trong () hả sư phụ ?

Ý mình không phải vậy, để trong () là để tránh sót thôi, giống như trường hợp vừa rồi. Nó không bắt buộc nhưng làm như vậy sẽ rõ ràng hơn.

Ví dụ:

If ((điều kiện 1 OR điều kiện 2) AND (điều kiện 3 OR điều kiện 4 OR điều kiện 5)) then

Bạn hoacomay96 quá lời rồi, mình làm gì có chức sư phụ, các anh chị ở GPE mới chính là sư phụ đấy, mình tình cờ vào GPE qua một người bạn giới thiệu, thế là mê tít luôn. Cảm ơn GPE rất nhiều.
 
Upvote 0
Thì một chữ cũng là thầy mà... hi hi phải vậy không sư phụ ? Sư phụ ơi sao cái lệnh Me.TextBox.Value=Me.TextBox em sài mà không tác dụng gì cả. ý em muốn là thông tin của lần nhập trước vẫn còn lưu lại trên hộp textbox của lần khởi động sau cơ .Ví dụ lần trước em nhập là: 12345 thì khi khởi động máy và mở chương trình thì thông tin 12345 vẫn còn trên hộp text box đó.
 
Upvote 0
sao cái lệnh Me.TextBox.Value=Me.TextBox em sài mà không tác dụng gì cả. ý em muốn là thông tin của lần nhập trước vẫn còn lưu lại trên hộp textbox của lần khởi động sau cơ .Ví dụ lần trước em nhập là: 12345 thì khi khởi động máy và mở chương trình thì thông tin 12345 vẫn còn trên hộp text box đó.

To Hoacomay96
Bạn có thể có hai cách
Cách 1 tạo một biến dùng chung, cách khai báo như sau:
PHP:
'Biến dùng chung này bạn khai báo trong module1:
Public TestTextBox As String
Cách 2:
Khi xử lý thủ tục đóng form, gán giá trị textbox vào một range nào đó do bạn quy định.
Xử lý thủ tục khi form active, gán giá trị ô textbox = giá trị của range nào đó do bạn chọn.

Với cách 2 khi bạn thoát khỏi excel thì giá trị lần nhập cuối vẫn thể hiện cho bạn. Theo mình bạn nên làm theo cách 2.

Nếu bạn cần lưu nhiều thông số giá trị khi bạn có nhiều form, nên tạo một sheet riêng biệt lưu các thông số này và đặt tên cho range để dễ nhớ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn huynh rất nhiều, có lẽ cách 2 là lý tưởng hơn cả.

các huynh cho em hỏi cách tạo nút lệnh trên form gọi 1 macro để chạy như thế nào ạ ?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
các huynh cho em hỏi cách tạo nút lệnh trên form gọi 1 macro để chạy như thế nào ạ ?

Chào Hoacomay96
Khi bạn tạo xong một nút lệnh trên form, muốn click cho nó thực thi một thủ tục (sub), hàm (function) thì bạn dùng đoạn code xử lý khi có sự kiện nút lệnh được click. Mình giả sử nút lệnh có tên cmdProcess

PHP:
Sub cmdProcess_Click()
Application.Run "TestMacro"  'Tên của Macro cần thực thi để trong dấu nháy kép.
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom