Báo lỗi khi chuyển focus sang control khác trên Form

Liên hệ QC

manhhung12

Thành viên thường trực
Tham gia
20/3/08
Bài viết
232
Được thích
88
Các ban thử chạy form sau đó nhập Data và ấn nút save sẽ có báo lỗi, tôi không hiểu nguyên nhân. giúp tôi sửa lỗi này.
tks
 

File đính kèm

Nguyên nhân là bạn dùng Setfocus không đúng với thứ tự thực hiện câu lệnh.

Tổt nhất bạn nên sử dụng thuộc tính TabStop và TabIndex trong khi thiết kế Form để quy định trình tự di chuyển con trỏ cho mỗi Obj trên Frm.

Ví dụ các Textbox bạn đặt TabStop = True và TabIndex = 0,1,2,3
Nút Save bạn đặt TabStop = True và TabIndex = 4
Các Obj khác bạn đặt TabStop = False sau đó dùng phương thức SetForcus để di chuyển con trỏ đến thì câu lệnh sẽ ngắn gọn và dể kiểm soát
 
Upvote 0
Nguyên nhân là bạn dùng Setfocus không đúng với thứ tự thực hiện câu lệnh.

Tổt nhất bạn nên sử dụng thuộc tính TabStop và TabIndex trong khi thiết kế Form để quy định trình tự di chuyển con trỏ cho mỗi Obj trên Frm.

Ví dụ các Textbox bạn đặt TabStop = True và TabIndex = 0,1,2,3
Nút Save bạn đặt TabStop = True và TabIndex = 4
Các Obj khác bạn đặt TabStop = False sau đó dùng phương thức SetForcus để di chuyển con trỏ đến thì câu lệnh sẽ ngắn gọn và dể kiểm soát
Nhưng có 1 điều tôi hơi ngại vì trong quá trình design có thể thêm bớt các control thì làm đảo lộn hết các tabindex thì khó kiểm soát lắm.
"dùng Setfocus không đúng với thứ tự thực hiện câu lệnh." là sao bạn nhỉ? bởi tôi quan niệm nếu sau khi exit 1 control (textox/commandbutton...) thì ta sẽ cho chuyển focus sang control khác là theo ý ta muốn mà.
 
Upvote 0
Bạn không ngại về TabIndex vì nếu bạn có thêm Control thì tabIndex của nó sẽ tiếp theo chứ không bao giờ chèn vào giữa cả. Bạn phải thấy là trong VBA ngoài việc thực hiện lệnh của VB nó còn phải ưu tiên thực hiện lệnh của Application. Bạn không thấy trong event KeyPress đó sao, nó đâu có thèm để ý việc thưc hiên câu lệnh sau mã Ascii mà nó lại di chuyển khi nhấn Enter đó sao Nhất là các điều khiển con đẻ cua MS OFi). Vậy nên chấp nhận theo cái riêng của nó khi sử dụng nó, chứ mình thấy rất nhiều trường hợp nó không đếm xỉa đến việc SetFocus của mình đâu. Còn khi cần phải lựa chọn đúng êvnt mới thực hiện được
 
Lần chỉnh sửa cuối:
Upvote 0
nếu tôi load form xong nhưng muốn thoat ngay thì báo lỗi (tôi đã làm theo cách bạn HD)
các bạn xem hình.
h1: sau khi nhấn exit
h2: sau khi nhấn ok trên hộp thoai báo lỗi.
tÔI CŨNG MUỐN HỎI THÊM:
HTML:
 1/Dể làm tươi listbox sau khi insert data tôi viết như sau:
                  Me.ListBox1.RowSource = Sheet2!lvBds  '(trong đó: lvBds là 1 name động)
           2/tại sao khi đã chọn font unicode (cả trên workbook và form: font.name=arial)
nhưng trên form kg gõ được tiếng việt.
nhưng ct báo lỗi. Vậy phải làm như thế nào là hơp lý
 
Lần chỉnh sửa cuối:
Upvote 0
1/Lỗi là chuyển Focus đến điều khiển đang đóng, trong mã lệnh của nút exit thêm cancel=true nó sẽ bỏ qua việc chuyển focus
2/VBA không hỗ trợ Unicode bạn ơi nên không hiển thị tiếng Việt Uni. TUANVNUI có viết các hàm chuyển đổi font để hiển thị trên Form, msgbox vv... bạn tham khảo xem
 
Upvote 0
1/Lỗi là chuyển Focus đến điều khiển đang đóng, trong mã lệnh của nút exit thêm cancel=true nó sẽ bỏ qua việc chuyển focus
2/VBA không hỗ trợ Unicode bạn ơi nên không hiển thị tiếng Việt Uni. TUANVNUI có viết các hàm chuyển đổi font để hiển thị trên Form, msgbox vv... bạn tham khảo xem
Tôi dùng sự kiện keydown với keycode hay hơn và ổn rồi bạn à. Ồ nếu VBA kg hỗ trợ unicode thì chán quá
 
Upvote 0
Web KT

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

Back
Top Bottom