Giúp Code Userform tìm kiếm

  • Thread starter Thread starter vova2209
  • Ngày gửi Ngày gửi
Liên hệ QC

vova2209

Thành viên tích cực
Tham gia
5/4/17
Bài viết
835
Được thích
112
Giới tính
Nam
Nghề nghiệp
Đường bộ
Anh chị giúp em code tìm kiếm:
VD khi đánh chữ "cắt" thì sẽ tìm được những dòng nào có chữ cắt hiện lên form, khi kích đúp vào thì sẽ đi đến vị trí dòng đó
Mong anh chị giúp đỡ em!

Untitled.png
 

File đính kèm

Tôi làm cho bạn lần cuối. Có vấn đề gì thêm thì cứ nhờ mọi người, đừng gọi tên tôi. Nếu tôi có hứng thì tôi sẽ tự tham gia.

Muốn thế thì sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và định dạng thích hợp cho cột 4.

Nếu thế thì phải gán cho mỗi dòng dữ liệu trong mảng ArrayData, cũng đồng thời là trong ListBox, chỉ số dòng của nó trên sheet. Khi click mục trong ListBox thì đọc ra chỉ số dong trên sheet của mục được chọn. "Gán" được thực hiện bằng cách sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và nhâp chỉ số dòng trên sheet của dòng hiện hành vào cột cuối cùng được thêm sau khi nhập dữ liệu vào ArrayData. Khi click thì đọc ra chỉ số dòng từ cột cuối. Thế thôi.
1. sửa thành
Mã:
Sub ganSourceListbox()
Dim k As Long
Dim lastRow As Long
    With ThisWorkbook.Worksheets("Don Gia Nhan Cong")
        MaxCol = .Range("A3").End(xlToRight).Column
        lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        If lastRow < 4 Then Exit Sub
'        lastRow trong truong hop nay khong chua du lieu. Di len tren toi khi gap gia tri <> ""
        For k = lastRow To 4 Step -1
            If Len(.Range("A" & k).Value) Then Exit For
        Next k
        MaxRow = k - 3
'        lay du lieu vao mang ArrayData
        ArrayData = .Range("A4").Resize(MaxRow, MaxCol).Value
    End With
'    them 1 cot cuoi vao mang ArrayData
    ReDim Preserve ArrayData(1 To UBound(ArrayData, 1), 1 To MaxCol + 1)
'    duyet tung dong cua mang ArrayData
    For k = 1 To UBound(ArrayData, 1)
'        ghi chi so dong tren sheet cua muc hien hanh vao cot cuoi da them
        ArrayData(k, MaxCol) = k + 3
'        dinh dang cot DON GIA
        ArrayData(k, 4) = Format(ArrayData(k, 4), "#,##0.00")   ' neu DON GI khong co phan thap phan thi Format(ArrayData(k, 4), "#,##0")
    Next k
    ReDim TempArr(1 To MaxRow, 1 To MaxCol)
'    nhap mang ArrayData vao ListBox
    Me.lstDanhSachVPP.List = ArrayData
End Sub
2. Thêm
Mã:
Private Sub lstDanhSachVPP_Change()
Dim r As Long
    With lstDanhSachVPP
        If .ListIndex < 0 Then Exit Sub
'        doc ra chi so dong tren sheet cua muc duoc chon
        r = .List(.ListIndex, MaxCol - 1)
    End With
'    chon o o dong r va cot D
    ThisWorkbook.Worksheets("Don Gia Nhan Cong").Range("D" & r).Select
End Sub

Tôi chả hiểu "Định dạng kẻ dòng list" là gì. Cũng chả biết "dòng list" là dòng gì. Hãy tập giải thích cho người khác, kể cả những người chậm hiểu như tôi, hiểu ý của mình. Vấn đề của mình mà muốn nhanh nhanh, tốn ít công sức thời gian thì tôi bó tay.

Như bài #7 thôi: View -> Object Browser -> ListBox -> BoundColumn -> F1
Hoặc gú gồ.

Chỉ nên hỏi những cái không tự làm được. Bạn biết đọc, biết dịch thì sao tôi lại phải đọc và dịch thay bạn?
Bác nhiều lần cuối thế ... út, ít ụt ....
 
Upvote 0
Upvote 0
Tôi làm cho bạn lần cuối. Có vấn đề gì thêm thì cứ nhờ mọi người, đừng gọi tên tôi. Nếu tôi có hứng thì tôi sẽ tự tham gia.

Muốn thế thì sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và định dạng thích hợp cho cột 4.

Nếu thế thì phải gán cho mỗi dòng dữ liệu trong mảng ArrayData, cũng đồng thời là trong ListBox, chỉ số dòng của nó trên sheet. Khi click mục trong ListBox thì đọc ra chỉ số dong trên sheet của mục được chọn. "Gán" được thực hiện bằng cách sau khi lấy dữ liệu vào mảng ArrayData thì duyệt từng dòng của nó và nhâp chỉ số dòng trên sheet của dòng hiện hành vào cột cuối cùng được thêm sau khi nhập dữ liệu vào ArrayData. Khi click thì đọc ra chỉ số dòng từ cột cuối. Thế thôi.
1. sửa thành
Mã:
Sub ganSourceListbox()
Dim k As Long
Dim lastRow As Long
    With ThisWorkbook.Worksheets("Don Gia Nhan Cong")
        MaxCol = .Range("A3").End(xlToRight).Column
        lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
        If lastRow < 4 Then Exit Sub
'        lastRow trong truong hop nay khong chua du lieu. Di len tren toi khi gap gia tri <> ""
        For k = lastRow To 4 Step -1
            If Len(.Range("A" & k).Value) Then Exit For
        Next k
        MaxRow = k - 3
'        lay du lieu vao mang ArrayData
        ArrayData = .Range("A4").Resize(MaxRow, MaxCol).Value
    End With
'    them 1 cot cuoi vao mang ArrayData
    ReDim Preserve ArrayData(1 To UBound(ArrayData, 1), 1 To MaxCol + 1)
'    duyet tung dong cua mang ArrayData
    For k = 1 To UBound(ArrayData, 1)
'        ghi chi so dong tren sheet cua muc hien hanh vao cot cuoi da them
        ArrayData(k, MaxCol + 1) = k + 3
'        dinh dang cot DON GIA
        ArrayData(k, 4) = Format(ArrayData(k, 4), "#,##0.00")   ' neu DON GI khong co phan thap phan thi Format(ArrayData(k, 4), "#,##0")
    Next k
    ReDim TempArr(1 To MaxRow, 1 To MaxCol)
'    nhap mang ArrayData vao ListBox
    Me.lstDanhSachVPP.List = ArrayData
End Sub
2. Thêm
Mã:
Private Sub lstDanhSachVPP_Change()
Dim r As Long
    With lstDanhSachVPP
        If .ListIndex < 0 Then Exit Sub
'        doc ra chi so dong tren sheet cua muc duoc chon
        r = .List(.ListIndex, MaxCol)
    End With
'    chon o o dong r va cot D
    ThisWorkbook.Worksheets("Don Gia Nhan Cong").Range("D" & r).Select
End Sub

Tôi chả hiểu "Định dạng kẻ dòng list" là gì. Cũng chả biết "dòng list" là dòng gì. Hãy tập giải thích cho người khác, kể cả những người chậm hiểu như tôi, hiểu ý của mình. Vấn đề của mình mà muốn nhanh nhanh, tốn ít công sức thời gian thì tôi bó tay.

Như bài #7 thôi: View -> Object Browser -> ListBox -> BoundColumn -> F1
Hoặc gú gồ.

Chỉ nên hỏi những cái không tự làm được. Bạn biết đọc, biết dịch thì sao tôi lại phải đọc và dịch thay bạn?
được rồi bạn! mình cảm ơn, để mình vận động hơn chút..cảm ơn nhiều ^^!
 
Upvote 0

File đính kèm

Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom