Hàm Vlookup trong textbox

Liên hệ QC

vudao

Thành viên mới
Tham gia
23/11/09
Bài viết
36
Được thích
3
Chào thân ái đến anh chị và các bạn trong GPE!
Nhờ mọi người giúp đỡ về công thức tìm kiếm từ giá trị của textbox
Khi nhập textbox mã nhân viên
textbox tên nhân viên sẽ hiển thị tương ứng với mã nhân viên đó
xin cám ơn mọi người
 

File đính kèm

  • test.xlsm
    18.8 KB · Đọc: 31
Chào thân ái đến anh chị và các bạn trong GPE!
Nhờ mọi người giúp đỡ về công thức tìm kiếm từ giá trị của textbox
Khi nhập textbox mã nhân viên
textbox tên nhân viên sẽ hiển thị tương ứng với mã nhân viên đó
xin cám ơn mọi người
Xóa hết cái code cũ thay cái này xem nào.Không dùng hàm.
Mã:
Private Sub txt_mnv_Change()
  Dim dk As String, arr, lr As Long
  With Sheets("dsnv")
       dk = txt_mnv.Value
       lr = .Range("A" & Rows.Count).End(xlUp).Row
       arr = .Range("A2:B" & lr).Value
       For i = 1 To UBound(arr)
           If dk = arr(i, 1) Then
              txt_ten = arr(i, 2)
              GoTo xong
           End If
        Next i
        txt_ten = ""
  End With
xong:
End Sub
 
Upvote 0
Chào thân ái đến anh chị và các bạn trong GPE!
Nhờ mọi người giúp đỡ về công thức tìm kiếm từ giá trị của textbox
Khi nhập textbox mã nhân viên
textbox tên nhân viên sẽ hiển thị tương ứng với mã nhân viên đó
xin cám ơn mọi người
Bạn chép code sau vào form nhé.
Mã:
Public rst As Object
Private Sub txt_mnv_Change()
    On Error Resume Next
    rst.Filter = "MNV='" & txt_mnv.Text & "'"
    If rst.RecordCount > 0 Then
        txt_ten.Text = rst.Fields(1).Value
    Else
        txt_ten.Text = ""
    End If
End Sub
Private Sub UserForm_Initialize()
    Set rst = CreateObject("ADODB.Recordset")
    rst.Open ("Select * from [DSNV$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 3
End Sub
 
Upvote 0
Xóa hết cái code cũ thay cái này xem nào.Không dùng hàm.
Mã:
Private Sub txt_mnv_Change()
  Dim dk As String, arr, lr As Long
  With Sheets("dsnv")
       dk = txt_mnv.Value
       lr = .Range("A" & Rows.Count).End(xlUp).Row
       arr = .Range("A2:B" & lr).Value
       For i = 1 To UBound(arr)
           If dk = arr(i, 1) Then
              txt_ten = arr(i, 2)
              GoTo xong
           End If
        Next i
        txt_ten = ""
  End With
xong:
End Sub
cám ơn bạn, mình làm được rồi.
cho mình hỏi thêm xíu: sao mình dùng công thức lấy giá trị textbox trên nó không hoạt động nhỉ?
Bài đã được tự động gộp:

Bạn chép code sau vào form nhé.
Mã:
Public rst As Object
Private Sub txt_mnv_Change()
    On Error Resume Next
    rst.Filter = "MNV='" & txt_mnv.Text & "'"
    If rst.RecordCount > 0 Then
        txt_ten.Text = rst.Fields(1).Value
    Else
        txt_ten.Text = ""
    End If
End Sub
Private Sub UserForm_Initialize()
    Set rst = CreateObject("ADODB.Recordset")
    rst.Open ("Select * from [DSNV$]"), "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 Xml;Data Source=" & ThisWorkbook.FullName, 1, 3
End Sub
cám ơn AD
 
Upvote 0
Chào thân ái đến anh chị và các bạn trong GPE!
Nhờ mọi người giúp đỡ về công thức tìm kiếm từ giá trị của textbox
Khi nhập textbox mã nhân viên
textbox tên nhân viên sẽ hiển thị tương ứng với mã nhân viên đó
xin cám ơn mọi người
Nếu bạn vẫn muốn dùng Vlookup thì dùng code này. Tuy nhiên do mã nhân viên bạn đang để trên sheet DSNV là kiểu số, nên lưu ý khi nhập mã vào Textbox phải chuyển đổi về số mới Vlookup được.
Mã:
Private Sub txt_mnv_AfterUpdate()
    Dim kqTK
    Dim sArray_DSNV
    If txt_mnv <> "" Then
        txt_ten = ""
        kqTK = Application.VLookup(Val(txt_mnv), Sheets("DSNV").Range("A2:B4"), 2, 0)
        Select Case IsError(kqTK)
            Case False: txt_ten = Application.VLookup(Val(txt_mnv), Sheets("DSNV").Range("A2:B4"), 2, 0)
            Case True: txt_ten = "No result!"
        End Select
    End If
End Sub
 
Upvote 0
Nếu bạn vẫn muốn dùng Vlookup thì dùng code này. Tuy nhiên do mã nhân viên bạn đang để trên sheet DSNV là kiểu số, nên lưu ý khi nhập mã vào Textbox phải chuyển đổi về số mới Vlookup được.
Mã:
Private Sub txt_mnv_AfterUpdate()
    Dim kqTK
    Dim sArray_DSNV
    If txt_mnv <> "" Then
        txt_ten = ""
        kqTK = Application.VLookup(Val(txt_mnv), Sheets("DSNV").Range("A2:B4"), 2, 0)
        Select Case IsError(kqTK)
            Case False: txt_ten = Application.VLookup(Val(txt_mnv), Sheets("DSNV").Range("A2:B4"), 2, 0)
            Case True: txt_ten = "No result!"
        End Select
    End If
End Sub
Ok! mình đã hiểu, cám ơn bạn nhiều
 
Upvote 0
Vấn đề nữa mà mình muốn đề cập đến để tác giả bài đăng lưu tâm thêm:
Cần có hệ mã NV có tính tương tác cao (ví dụ giữa người quản lý (mã) & người có mã)
Như trường hợp bạn muốn tìm hồ sơ của người là Nguyễn Trần Ai, thì làm sao bây chừ để biết mã của người này?
Trong trường hợp này mình xin gợi ý bạn bộ mã của mình sau vài năm ngâm cứu:

Mã NVTên Nhân viên
VFF00Vũ Đình Đạo
VFD00Võ Đình Dương
VJD00Võ Dũng
VFF01Vy Đức Độ
THA00Trần Ngô Hoàng Ánh
THA01Từ Hoài Anh
THA02Thái Thị Hà Ân

Với qui tắc của bộ mã như vầy, mình cũng chưa biết ngay mã của Thái T. Hà Ân, nhưng chắc 1 điều là 3 kí tự đầu trong mã người này sẽ phải là THA;
& dễ dàng tìm ra cả nhóm người có chung 3 ký tự đầu là THA
Trên form, ta chỉ cần gõ lên 1 TextBox 3 ký tự đó, thì trên ListBox sẽ hiện tất tần tật những người có chung phần đặt tính (THA)

Rất vui nếu được trao đổi tiếp cùng bạn xung quanh về vấn liên quan!
 
Upvote 0
Web KT

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

Back
Top Bottom