Gõ Enter ở TextBox thì chạy code

Liên hệ QC

thaibinh_excel

Thành viên hoạt động
Tham gia
18/10/07
Bài viết
127
Được thích
29
Nghề nghiệp
Bán Hàng
Dear các bác,

Nhờ các bác chỉ giáo giúp vấn đề này. Minh tạo 1 Form trong đó có nhiều TextBox, mình muốn sau khi nhập đến TextBox5 chẳng hạn, mình nhấn Enter thì thực hiện 1 lệnh nào đó luôn, thay vì mình phải dùng đến Command Button. Các pác tư vấn hộ với. Cám ơn nhiều,
 
Vậy bác thử đoạn code này xem!
Mã:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then MsgBox "Tuyet!"
End Sub
Hoặc dùng cập hợp code này:
Mã:
Private Sub CommandButton1_Click()
MsgBox "Thu"
End Sub
 
Private Sub CommandButton1_Enter()
CommandButton1_Click
End Sub
 
Upvote 0
Mình đã làm được rồi, theo cách 1, nhưng bây giờ lại thêm thử nghiệm mới là mình muốn code chạy sau khi nhấn okie của msgbox, các pác nghiên cứu giúp với.

Vi du : Msg(
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn lẩm cẩm mất rồi, đương nhiên nhấn OK là code lại chạy tiếp rồi còn điều khiển gì nữa. Chắc bạn liên tưởng trên Msgbox có vài nút như OK, Cancel, Retry.... Và viết lệnh phân nhánh tùy theo nút được chọn rồi.
 
Upvote 0
Nếu bạn cần có lựa chọn thì phải sửa lại cái Msgbox, phải có từ 2 nút bấm trở lên mới lựa chọn được chứ. Ví dụ Msg sau có 2 nút Ok và Cancel
if Msgbox (" Hãy nhấn nút kiểm tra tình trạng", vbOKCancel) = VbOk then
'code kiểm tra tình trạng
end if
 
Upvote 0
Bạn thu code phân nhánh (Bạn lưu ý giữa hàm Msgbox và lệnh Msgbox như trong code)
Mã:
Sub thu()
Dim k As Boolean
Dim lg As Long
Dim tb As String
k = True
Do While k
lg = lg + 10
tb = "Moi lan nhan Yes luong tang them 10. Dung nhan No." & Chr(13) & Chr(13)
tb = tb & "Hien nay so luong la: " & lg & Chr(13)
If MsgBox(tb, vbYesNo) = vbNo Then k = False
Loop
MsgBox "Ban quyet dinh luong la " & lg
End Sub
 
Upvote 0
Vâng các pác ơi, mình mày mò cũng được rồi. Bây giờ lại làm phiền các pác chút nữa. Cái này viết ra code thì viết thế nào các pác nhỉ :
=IF($I6=
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu định trị ngay trong code thì dùng hàm IIF() nhưng địa chỉ phải rõ ràng chứ ghi cell không như vậy dễ lỗi lắm
Trường hợp của bạn dùng cấu cấu trúc Select case...End select là dễ hiểu và viết hơn.
 
Upvote 0
Nếu định trị ngay trong code thì dùng hàm IIF() nhưng địa chỉ phải rõ ràng chứ ghi cell không như vậy dễ lỗi lắm
Trường hợp của bạn dùng cấu cấu trúc Select case...End select là dễ hiểu và viết hơn.


Pác ơi, vấn đề là mình không thể diễn giải được code cho việc cộng ngày tháng năm của phần sau nữa ! :). Phần địa chỉ thì mình quy vào TextBox rồi.
 
Lần chỉnh sửa cuối:
Upvote 0
Cái đoạn này phải không DATE(YEAR($C6)+1,MONTH($C6)+6,DAY($C6))
Trong VBA cũng có các hàm Year, Month, Day tương ứng mà
Giả sử bạn quy cái $C6 kia thành Text1.Text rồi thì bạn làm như sau
Dim Y%, M%, D%
Y = Year(Text1.Text)+1
M= Month(Text1.Text)+6
D=Day(Text1.Text)
Toàn bộ đoạn trên sẽ là Dateserial(Y,M,D)
 
Upvote 0
Cám ơn pác hoa35, còn cái vụ bi đảo ngược ngày tháng , có pác nào giúp với ??
 
Lần chỉnh sửa cuối:
Upvote 0
Cám ơn pác hoa35, còn cái vụ bi đảo ngược ngày tháng , có pác nào giúp với ??
Giải quyết vấn đề này triệt để nhất là bạn đừng nên nhập liệu ngày tháng bằng TextBox (quá tệ) ---> Calendar chuyên dùng nhập liệu ngày tháng tại sao bạn lại không dùng?
 
Upvote 0
Ah. pác thông cảm, mình là tay mơ đang lần mò học VBA nên chưa biết cách dùng calendar. thêm vào đó mình còn cần phải tính toán đễ việc cộng ngày tháng như trên được tự động nữa. Nói chung học từng bước 1 thôi pác ơi.
Cũng không hình dung được file bạn nó như thế nào... Nói lòng vòng không bằng nhìn thấy file thật của bạn... lúc đó sẽ dể giải quyết hơn!
 
Upvote 0
File 20MB, là 01 tổ hợp nhiều code va Form pác ơi, nhưng vấn đề mình gặp thì cũng dễ hiễu lắm, nó thế này :

Mình tạo 1 Form nhập gồm mã số KH, ngày mua hàng , số tiền. Sau khi nhập xong, căn cứ mã số code sẽ cho ra tình trạng KH trên textbox trong Form luôn, sau đó nó cho ra thêm tình trạng mới sau khi đã cộng số tiền vừa nhập ở trên. Nếu tình trạng mới khác tình trạng cũ thì căn cứ vào ngày mua hàng để gia tăng thời gian hiệu lực của khách hàng bằng cách lấy ngày mua hàng này cộng thêm 1,5 năm nữa và ngày hiệu lực mới sẽ hiện trên Form sau đó chép ngược lại excel ở 1 chỗ mình quy định. Tất cả mình đều đã viết code cho nó chạy được, chỉ có 1 điều là khi chép ngược lại excel thì nó bị đảo định dạng format dd/mm/yyyy thành mm/dd/yyyy ( mặc dù trong Form nó vẫn hiện đúng??). Chỉ nhờ các pác giúp xem làm thế nào để sửa lỗi này ??? Regional and Language Óption mình đang chỉnh ở dd/mm/yyyy
 
Lần chỉnh sửa cuối:
Upvote 0
Hì, củ chuối nhé, trong Excel bạn định dạng là text, như thế là hết đảo lung tung và bạn cũng chẳng cần quan tâm đến Format của textbox nữa.
Còn việc nhập ngày tháng cho đúng thì thường người ta hay sử dụng calendar hoặc tạo ra 2 commbo ngày và tháng kết hợp 1 textbox năm.
 
Upvote 0
Ax. Cách đó thì mình biết, nhưng k thể xài được nên mới cầu cứu các pác cách khác xem ấy mà!
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu vậy chắc chỉ còn cách là vào Regional and Language Option chỉnh theo đúng tiêu chuẩn Vinamese (Hình như phải cài bổ sung ngôn ngữ châu Á thì phải)
 
Upvote 0
Mình đảm bảo được: ( Giả sử: txt_ngay: Textbox nhập ngày tháng, ô A3 trên sheet1 cần trả về):

.....
sheet1.[a3]=format(txt_ngay,"dd/mm/yyyy")
.....
Nếu bạn có số năm , tháng, ngay thì dùng dateserial mà đổi cũng được

...
sheet1.[a3]=Format(DateSerial(year,month,day),"dd/mm/yyyy")
....
Bạn còn nói không được nữa là mình cự liền!!!!
 
Lần chỉnh sửa cuối:
Upvote 0
To: sealand,
Vấn đề ngày tháng định dạng trong code và vấn đề định dạng như bạn nói nhiều người gặp phải.
Bạn hãy thử:
1. Chỉnh định dạng ngày trong Regional and Language Options > Tab Date > Short Date: MM/dd/yyyy
2. Bạn nhập vào ô (giả sử) B4 ở Sheet1 một giá trị ngày.
3. Bạn viết đoạn code tương tự như bạn đề nghị, giả sử:
Mã:
Sub test1()
Sheet1.[B5] = Format(Sheet1.[B4], "dd/mm/yyyy")
End Sub
Cuối cùng bạn thấy kết quả ra sao?

LVD
 
Upvote 0
Web KT

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

Back
Top Bottom