Ngăn không cho con trỏ di chuyển sang Textbox khác

Liên hệ QC

ptlong04x1

Thành viên tích cực
Tham gia
15/10/08
Bài viết
1,031
Được thích
1,531
Nghề nghiệp
Kỹ sư xây dựng
Chào mọi người, mình có 1 thắc mắc như sau, mọi người xem giúp :

- Mình có 1 Form với 1 số Textbox, trong đó có 2 Textbox là TxtBieuthucTxtKetqua.

- Mình nhập 1 biểu thức vào TxtBieuthuc và nhấn Enter thì kết quả sẽ xuất hiện trong TxtKetqua (kiểu như là bấm máy tính), code đơn giản như sau :

PHP:
Private Sub TxtBieuThuc_AfterUpdate()
    TxtKetqua = CStr(Evaluate(TxtBieuthuc))
End Sub
- Tuy nhiên sau khi nhấn Enter thì con trỏ sẽ nhảy sang TxtKetqua, lúc này nếu muốn chỉnh sửa biểu thức thì phải mất thêm 1 thao tác là click lại vào TxtBieuthuc rồi mới chỉnh sửa được.

Vậy, mình muốn hỏi, có cách nào để sau khi Enter con trỏ vẫn nằm yên tại TxtBieuthuc để có thể chỉnh sửa biểu thức ngay lập tức hay không?
 
Lần chỉnh sửa cuối:
Chào mọi người, mình có 1 thắc mắc như sau, mọi người xem giúp :

- Mình có 1 Form với 1 số Textbox, trong đó có 2 Textbox là TxtBieuthucTxtKetqua.

- Mình nhập 1 biểu thức vào TxtBieuthuc và nhấn Enter thì kết quả sẽ xuất hiện trong TxtKetqua (kiểu như là bấm máy tính), code đơn giản như sau :

PHP:
Private Sub TxtBieuThuc_AfterUpdate()
TxtKetqua = CStr(Evaluate(TxtBieuthuc))
End Sub
- Tuy nhiên sau khi nhấn Enter thì con trỏ sẽ nhảy sang TxtKetqua, lúc này nếu muốn chỉnh sửa biểu thức thì phải mất thêm 1 thao tác là click lại vào TxtBieuthuc rồi mới chỉnh sửa được.

Vậy, mình muốn hỏi, có cách nào để sau khi Enter con trỏ vẫn nằm yên tại TxtBieuthuc để có thể chỉnh sửa biểu thức ngay lập tức hay không?
Anh dùng thử đoạn code này thử được không nhé
PHP:
Private Sub TxtKetqua_Enter()
Application.SendKeys "{TAB}"
End Sub
 
Upvote 0
Trên Form không chỉ có 2 Textbox là TxtBieuthucTxtKetqua bạn ạ. Còn có 1 số Textbox1 số CommandButton khác nữa. Dùng TAB thì có thể nó nhảy sang Control khác không biết chừng. Mình đã thử dùng TxtBieuthuc.Setfocus nhưng không được.
 
Upvote 0
Trên Form không chỉ có 2 Textbox là TxtBieuthucTxtKetqua bạn ạ. Còn có 1 số Textbox1 số CommandButton khác nữa. Dùng TAB thì có thể nó nhảy sang Control khác không biết chừng. Mình đã thử dùng TxtBieuthuc.Setfocus nhưng không được.
Vậy cho con trỏ đi ngược lùi được không anh. Là vậy, em thử được đấy, anh thử nhé
PHP:
Private Sub TextBox2_Enter()
Application.SendKeys "{UP}"
Application.SendKeys "{END}"
End Sub
TextBox2 là cái kế tiếp của TxtBieuthuc , nếu là cái khác thì mình đổi tên của Sub
Nếu như anh nói khi nhập xong con trỏ nhảy về TxtBieuthuc thì chắc là
PHP:
Private Sub TxtBieuthuc_Enter()
Application.SendKeys "{UP}"
Application.SendKeys "{END}"
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã giải quyết được rồi. Lại thêm 1 ứng dụng hay của SendKeys. Cảm ơn bạn nhiều!
 
Upvote 0
Vậy cho con trỏ đi ngược lùi được không anh. Là vậy, em thử được đấy, anh thử nhé
PHP:
Private Sub TextBox2_Enter()
Application.SendKeys "{UP}"
Application.SendKeys "{END}"
End Sub
TextBox2 là cái kế tiếp của TxtBieuthuc , nếu là cái khác thì mình đổi tên của Sub
Nếu như anh nói khi nhập xong con trỏ nhảy về TxtBieuthuc thì chắc là
PHP:
Private Sub TxtBieuthuc_Enter()
Application.SendKeys "{UP}"
Application.SendKeys "{END}"
End Sub

Làm vậy con trỏ vẫn chạy chớp chớp và lệ thuộc vào TabIndex của các đối tượng. Như thế này cho gọn:

Mã:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
End Sub
 
Upvote 0
Làm vậy con trỏ vẫn chạy chớp chớp và lệ thuộc vào TabIndex của các đối tượng. Như thế này cho gọn:

Mã:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
End Sub

Em thử thì bị trục trặc chỗ này, trên Form của em có Thêm 1 CommandButton Thoát nữa. Một khi con trỏ đã nằm trong TxtBieuthucCancel = True thì mình cũng không thể click Thoát để Unload Form luôn. Anh cho thêm ý kiến nhé.
 
Upvote 0
Nói thực để sử lý như vậy phải kết hợp điều kiện, còn dùng đơn như vậy thì thật chả ra sao cả.
Riêng trường hợp của bạn thì nên sử lý như sau để nhấn Enter, mình vẫn còn kết quả, con trỏ vẫn ở ô đó và dữ liêu đã được chọn chuẩn bị nhập mới. Đồng thời các phím di chuyển khác vẫn hoạt động bình thường.

Mã:
Private Sub TextBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then
KeyCode = 0
With Me.TextBox2
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom