Viết hàm có tham số là textbox

Liên hệ QC

nguyennb

Thành viên hoạt động
Tham gia
23/10/07
Bài viết
103
Được thích
32
Tôi có nhiều form khác nhau. Tôi muốn khi nhập dữ liệu ở các text box bên trong các form này ta có sử dụng thêm phím F2 và F3 để hỗ trợ. Cụ thể, khi ấn F2 thì giá trị trong text box được nhân thêm với 100, F3 thì nhân thêm 1000 (tương tự như nút 00 và 000 ở các máy tính casino). Nhờ các cao thủ chỉ giúp, tôi vẫn đang loay hoay chẳng biết viết hàm hay thủ tục như thế nào.
 
Tôi có nhiều form khác nhau. Tôi muốn khi nhập dữ liệu ở các text box bên trong các form này ta có sử dụng thêm phím F2 và F3 để hỗ trợ. Cụ thể, khi ấn F2 thì giá trị trong text box được nhân thêm với 100, F3 thì nhân thêm 1000 (tương tự như nút 00 và 000 ở các máy tính casino). Nhờ các cao thủ chỉ giúp, tôi vẫn đang loay hoay chẳng biết viết hàm hay thủ tục như thế nào.

Khả năng mình thì không làm được yêu cầu của bạn là ấn phím F2 và F3. Tuy nhiên, mình đưa ra giải pháp khác, cũng là một lần click chuột, tương đương với động tác ấn 1 phím của bạn (tốc độ như nhau), nhưng đơn giản và dễ hiểu hơn. Bạn xem thử nhé!
 

File đính kèm

Upvote 0
Mượn code của bác cafi 1 chút nha! Mình làm được cho các nút trên bàn phím ngoại trừ các phím tắt của Windows thì nó không chạy. Như: F1, F2,...F12, Print, Insert,.. PageDown. Không biết lý do gì mong các cao thủ chỉ bảo thêm. Bạn xem file nha! Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Không biết có thể dùng Application.OnKey để gọi 1 code nào đó không nhỉ?
 
Upvote 0
Không biết có thể dùng Application.OnKey để gọi 1 code nào đó không nhỉ?

Em có thử dùng Application.Onkey nhưng chỉ có tác dụng trên sheet, không có tác dụng trên form anh à. Ví dụ từ sheet ấn F5 để gọi form lên thì được. Chứ dùng Onkey khi form đang mở thì không được. Em cũng không hiểu tại sao?
 
Upvote 0
Ở trên Form thì dùng sự kiện KeyUp hoặc KeyDown với biến KeyCode:
Thí dụ nhấn F4 để nhân 100 như yêu cầu:
PHP:
Private Sub txtMyNum_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyF4 Then Function2
End Sub
với Function 2 là function nhân 100 như file trên. KeyCode là gì hoặc const bao nhiêu thì truy tìm trong Object Browser. Thí dụ KeyCode = vbKeyF4 tương đương với KeyCode = 115

Có thể chèn những lệnh bất kỳ thí dụ như dựa vào mã hàng hoá trong textbox, mở lên 1 form hoặc 1 Message box cho biêt số tồn hiện tại trong kho (trước khi xuất, để khỏi bị âm); gọi là Quick Information
 
Upvote 0
Và một điều cần chú ý nữa là : sự kiện KeyUp hoặc KeyDown với biến KeyCode luôn đi kèm với 1 Object nào đó : Textbox, lable . . .
Chứ không phải là có tác dụng trên toàn bộ các Obj

Thân!
 
Upvote 0
sự kiện KeyUp hoặc KeyDown với biến KeyCode luôn đi kèm với 1 Object nào đó : Textbox, lable . . .
Trong Access mình thường dùng với Combobox kèm theo Property Control Tip Text và Property StatusBar Text của combobox là: "Press F3 for Quick Information."

Còn trong Excel không có mấy Property đó thì dùng kèm sự kiện MouseMove:
- Khi Move vào, 1 label có nội dung trên sẽ hiện ra trên form (Visible = True)
- Khi Move ra, label đó sẽ trở thành Visible = False

Cũng có thể kết hợp 1 label có nhiều nội dung (ghi chú), thay đổi theo sự kiện MouseMove của các object khác nhau.

Coi vẻ ngoài Pro nhắm!
 
Upvote 0
Cám ơn mọi người. Mình muốn có thêm phím hỗ trợ là F2 và F3 chứ không phải nút vì khi nhập dữ liệu ta đã luôn sử dụng tay phải+chuột=>tay phải quá tải, tay trái ít được sử dụng. Mình có viết một đoạn mã như này trong sự kiện keydown của textbox tên là tbTienName
'An phim F2 them 100
If KeyCode = vbKeyF2 Then
tbTienName = tbTienName * 100
End If
'An phim F3 them 1000
If KeyCode = vbKeyF3 Then
tbTienName = tbTienName * 1000
End If
Với từng textbox trong từng form tôi đều phải lặp lại đoạn code trên. Tôi thấy công việc có tính lặp lại nên đoán rằng phải có cách viết hàm hay thủ tục gì đó để làm cho chương trình trở nên gọn hơn. Sau này tôi có thể thay F2,F3 bằng các giá trị khác và các chức năng khác.
Excel có Activecell là ô đang được active ,Activesheet là sheet đang được active, vậy có cái nào kiểu như "activecontrol" là control hiện hành đang được focus không
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn mọi người. Mình muốn có thêm phím hỗ trợ là F2 và F3 chứ không phải nút vì khi nhập dữ liệu ta đã luôn sử dụng tay phải+chuột=>tay phải quá tải, tay trái ít được sử dụng. Mình có viết một đoạn mã như này trong sự kiện keydown của textbox tên là tbTienName Với từng textbox trong từng form tôi đều phải lặp lại đoạn code trên. Tôi thấy công việc có tính lặp lại nên đoán rằng phải có cách viết hàm hay thủ tục gì đó để làm cho chương trình trở nên gọn hơn. Sau này tôi có thể thay F2,F3 bằng các giá trị khác và các chức năng khác.
Excel có Activecell là ô đang được active ,Activesheet là sheet đang được active, vậy có cái nào kiểu như "activecontrol" là control hiện hành đang được focus không

Chắc cái này phải nhờ bác TuânVNUni viết 1 Class riêng cho bạn rồi.

Định viết Sub truyền tham số nhưng cũng dài hơn cả Code trên của bạn.

Thân!
 
Upvote 0
Web KT

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

Back
Top Bottom