Bằng sự kiện change của combobox, làm sao để lấy các ký tự vừa gõ (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia
17/8/08
Bài viết
8,662
Được thích
16,720
Giới tính
Nam
Picture1.jpg

Nhìn hình trên, tôi vừa gõ chữ NGUY, dĩ nhiên do đặc trưng của combobox nó tự động hoàn tất cả những giá trị còn lại (thuộc tính match entry complete). Tôi muốn giữ thuộc tính này, đồng thời bằng thuộc tính Change của combobox, tôi muốn nó xác định được cụm từ mình mới gõ vào. Tôi đã thử dùng SelStart, SelLength, nhưng không thể dùng được cho thuộc tính change đó, nhưng ngược lại khi dùng với commandbutton thì lại làm được.

Vậy làm sao có thể thông qua thuộc tính CHANGE hoặc thuộc tính KEYPRESS (với keypress, lại không xác định được nút back hay nút del), ta có thể lấy được giá trị đã gõ vào COMBOBOX?

Xin được hướng dẫn, cảm ơn.
 
Lần chỉnh sửa cuối:
View attachment 89068

Nhìn hình trên, tôi vừa gõ chữ NGUY, dĩ nhiên do đặc trưng của combobox nó tự động hoàn tất cả những giá trị còn lại (thuộc tính match entry complete). Tôi muốn giữ thuộc tính này, đồng thời bằng thuộc tính Change của combobox, tôi muốn nó xác định được cụm từ mình mới gõ vào. Tôi đã thử dùng SelStart, SelLength, nhưng không thể dùng được cho thuộc tính change đó, nhưng ngược lại khi dùng với commandbutton thì lại làm được.

Vậy làm sao có thể thông qua thuộc tính CHANGE hoặc thuộc tính KEYPRESS (với keypress, lại không xác định được nút back hay nút del), ta có thể lấy được giá trị đã gõ vào COMBOBOX?

Xin được hướng dẫn, cảm ơn.

Tôi không biết bạn định làm gì. Bạn nói là bạn "muốn" cái "Nguy" kia, tức là cái mà bạn đã gõ. Thế bây giờ tôi đặt con trỏ vào trước chữ "H" rồi "bôi đen" cụm "Hải" rồi nhấn Delete để chỉ còn lại "Nguyễn Chi" thì bạn định lấy cả nó hay cũng chỉ lấy "Nguy"? Vì "ễn Chi" bạn có gõ đâu???
Nhưng thôi, cái bạn muốn thì tôi cũng chả quan tâm. Bạn thử nghịch cái này:
Mã:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    TextBox1.Text = TextBox1.Text & CStr(KeyCode) & ", "
    Label1.Caption = CStr(ComboBox1.SelStart)
    Label2.Caption = CStr(ComboBox1.SelLength)
    Label3.Caption = ComboBox1.Text
End Sub
Nghịch cả với Shift để biết cả trạng thái của SHIFT, CTRL, và ALT
 
Upvote 0
Tôi không biết bạn định làm gì. Bạn nói là bạn "muốn" cái "Nguy" kia, tức là cái mà bạn đã gõ. Thế bây giờ tôi đặt con trỏ vào trước chữ "H" rồi "bôi đen" cụm "Hải" rồi nhấn Delete để chỉ còn lại "Nguyễn Chi" thì bạn định lấy cả nó hay cũng chỉ lấy "Nguy"? Vì "ễn Chi" bạn có gõ đâu???
Nhưng thôi, cái bạn muốn thì tôi cũng chả quan tâm. Bạn thử nghịch cái này:
Mã:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    TextBox1.Text = TextBox1.Text & CStr(KeyCode) & ", "
    Label1.Caption = CStr(ComboBox1.SelStart)
    Label2.Caption = CStr(ComboBox1.SelLength)
    Label3.Caption = ComboBox1.Text
End Sub
Nghịch cả với Shift để biết cả trạng thái của SHIFT, CTRL, và ALT

Cám ơn bạn, với sự kiện KeyUp đã giải quyết vấn đề, tuy nhiên khi xóa bằng nút BackSpace khi Combobox nó đang AutoComplete thì không thể xóa được! Bạn thử cho mình hướng giải quyết. (Bạn thử gõ chữ N rồi xóa thử xem)
Thanks.
 

File đính kèm

Upvote 0
Cám ơn bạn, với sự kiện KeyUp đã giải quyết vấn đề, tuy nhiên khi xóa bằng nút BackSpace khi Combobox nó đang AutoComplete thì không thể xóa được! Bạn thử cho mình hướng giải quyết. (Bạn thử gõ chữ N rồi xóa thử xem)
Thanks.

Mã:
Private Sub ComboBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 8 Then
        ComboBox1.SelText = ""
    End If
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom