Giúp code lấy dữ liệu nguồn vào Dictionary

Liên hệ QC

Minh Tùng

Thành viên hoạt động
Tham gia
16/3/14
Bài viết
150
Được thích
229
Giới tính
Nam
Hiện tại em đang có ý tưởng lấy tồn cuối kỳ (Dòng 39 của Sheet7) ngay thời điểm xuất bán hàng lên Form bán hàng (Double click UfBanHang.Txt0 mở UfSan_Pham) để thuận tiện nhưng em chưa biết viết code để lấy tồn cuối kỳ vào bằng Dictionary (như hình bên dưới em đang thiếu tồn cuối kỳ ở cột cuối).

Anh/chị có nguồn nào dẫn link giúp em hoặc có thể hỗ trợ sửa giúp em đoạn code tại UfSan_Pham để lấy tồn cuối kỳ ạ.
Em cám ơn nhiều!

Mã:
Private Sub UserForm_Initialize() 'Em can thay doi doan code nay de lay ton kho cuoi ky (Dong 39 sheet7)
    SpeedOn
    Dim Lr, Lr6, i As Long, Sh, Ws As Worksheet
    Set Sh = Sheet6
    Set Ws = Sheet7
    Lr6 = Sh.Range("C" & Rows.Count).End(xlUp).Row
    Lr = Ws.Range("C20").End(xlUp).Row
    With Me
        If Lr6 > 2 Then
            sArray = Sh.Range("C3:G" & Lr6).Value
            .LbxThongTin.List() = sArray
        End If
        For i = 0 To .LbxThongTin.ListCount - 1
            .LbxThongTin.List(i, 4) = DinhDang(.LbxThongTin.List(i, 4))
        Next i
        .txtTimData.SetFocus
    End With
    SpeedOff
End Sub

1579357232047.png
 

File đính kèm

  • Kim Long V200109 Help.xlsb
    502.8 KB · Đọc: 13
Có anh/chị nào đi qua xem giúp em với ạ, hic...
 
Upvote 0
Hiện tại em đang có ý tưởng lấy tồn cuối kỳ (Dòng 39 của Sheet7) ngay thời điểm xuất bán hàng lên Form bán hàng (Double click UfBanHang.Txt0 mở UfSan_Pham) để thuận tiện nhưng em chưa biết viết code để lấy tồn cuối kỳ vào bằng Dictionary (như hình bên dưới em đang thiếu tồn cuối kỳ ở cột cuối).

Anh/chị có nguồn nào dẫn link giúp em hoặc có thể hỗ trợ sửa giúp em đoạn code tại UfSan_Pham để lấy tồn cuối kỳ ạ.
Em cám ơn nhiều!

Mã:
Private Sub UserForm_Initialize() 'Em can thay doi doan code nay de lay ton kho cuoi ky (Dong 39 sheet7)
    SpeedOn
    Dim Lr, Lr6, i As Long, Sh, Ws As Worksheet
    Set Sh = Sheet6
    Set Ws = Sheet7
    Lr6 = Sh.Range("C" & Rows.Count).End(xlUp).Row
    Lr = Ws.Range("C20").End(xlUp).Row
    With Me
        If Lr6 > 2 Then
            sArray = Sh.Range("C3:G" & Lr6).Value
            .LbxThongTin.List() = sArray
        End If
        For i = 0 To .LbxThongTin.ListCount - 1
            .LbxThongTin.List(i, 4) = DinhDang(.LbxThongTin.List(i, 4))
        Next i
        .txtTimData.SetFocus
    End With
    SpeedOff
End Sub

View attachment 231287
Sao không liên hệ tác giả, thấy mở file đã báo thấy

Trong đó nhiều form nhiều code, phải nói rõ code nào ở module nào, sửa sao?
 
Upvote 0
Sao không liên hệ tác giả, thấy mở file đã báo thấy

Trong đó nhiều form nhiều code, phải nói rõ code nào ở module nào, sửa sao?
Dạ, em chính là tác giả đây anh. Hic...
Em có ý tưởng nhưng em viết tới đó bị bí rồi anh. File này em cũng đang chia sẻ trong diễn đàn mình ạ.

Anh có thể xem giúp em phần Private Sub UserForm_Initialize() của Userform UfSan_Pham lấy tồn cuối kỳ tại dòng 39 của Sheet7 vào cột cuối của Form ạ.
 
Upvote 0
Dạ, em chính là tác giả đây anh. Hic...
Em có ý tưởng nhưng em viết tới đó bị bí rồi anh. File này em cũng đang chia sẻ trong diễn đàn mình ạ.

Anh có thể xem giúp em phần Private Sub UserForm_Initialize() của Userform UfSan_Pham lấy tồn cuối kỳ tại dòng 39 của Sheet7 vào cột cuối của Form ạ.
ah, Ở hàng 1 sheet NXT (Sheet7) mà có mã SP cũng lần lượt giống như cột C sheet SanPham (sheet6) không?
Nếu giống thì không cần Dictionary
Và lấy được thì đặt vào đâu?
 
Upvote 0
Ở hàng 1 sheet NXT (Sheet7) mà có mã SP cũng lần lượt giống như cột C sheet SanPham (sheet6) không?
* Nếu đúng thì làm như code sau (chú ý tự kiểm tra không sai)

Mã:
Private Sub UserForm_Initialize() 'Em can thay doi doan code nay de lay ton kho cuoi ky (Dong 39 sheet7)
    SpeedOn
    Dim Lr, Lr6, i As Long, Sh, Ws As Worksheet
    
    
    Set Sh = Sheet6
    Set Ws = Sheet7
    Lr6 = Sh.Range("C" & Rows.Count).End(xlUp).Row
    Lr = Ws.Range("C20").End(xlUp).Row
    With Me
        If Lr6 > 2 Then
            Dim nR As Long, nC As Long, nN As Long, sArNXT39
            
            sArray = Sh.Range("C3:G" & Lr6).Value
            nR = UBound(sArray)
            nC = UBound(sArray, 2) + 1
            ReDim Preserve sArray(1 To nR, 1 To nC)
            
            sArNXT39 = Ws.Range("F39:KO39").Value
            
            If nR <= UBound(sArNXT39, 2) Then
                nN = nR
            Else
                nN = UBound(sArNXT39, 2)
            End If
            
            For i = 1 To nN
                sArray(i, nC) = sArNXT39(1, i)
            Next i
            
            .LbxThongTin.ColumnCount = 6
            .LbxThongTin.ColumnWidths = "60 pt;380 pt;30 pt;30 pt;50 pt;50 pt"
            .LbxThongTin.List() = sArray
            
        End If
        For i = 0 To .LbxThongTin.ListCount - 1
            .LbxThongTin.List(i, 4) = DinhDang(.LbxThongTin.List(i, 4))
        Next i
        .txtTimData.SetFocus
    End With
    SpeedOff
End Sub
* Nếu khác: thì phải dùng dictionary thì tương tự, tự làm
 
Upvote 0
ah, Ở hàng 1 sheet NXT (Sheet7) mà có mã SP cũng lần lượt giống như cột C sheet SanPham (sheet6) không?
Nếu giống thì không cần Dictionary
Và lấy được thì đặt vào đâu?

Dạ đúng rồi anh, Ở Sheet7 có mã sản phẩm + tên sản phẩm giống bên Sheet6. Nhưng Sheet6 thì không có tồn cuối kỳ, còn Sheet7 thì không có Đơn vị tính và Quy cách ạ.

Em cần lấy tồn cuối kỳ tại từ F39 đến cột cuối của Sheet7 vào LbxThongTin của UserForm UfSan_Pham ạ.
Nhưng LbxThongTin này em cần 6 cột: Mã sản phẩm + Tên sản phẩm + Đơn vị tính + Quy cách + Đơn giá + Tồn cuối kỳ
Hiện tại em đã lấy được 5 cột nhưng em chưa tìm ra cách để lấy thêm cột thứ 6 là Tồn cuối kỳ vào LbxThongTin.

Anh xem có thể code giúp em được không? Em cám ơn nhiều!
Bài đã được tự động gộp:

Ở hàng 1 sheet NXT (Sheet7) mà có mã SP cũng lần lượt giống như cột C sheet SanPham (sheet6) không?
* Nếu đúng thì làm như code sau (chú ý tự kiểm tra không sai)

Mã:
Private Sub UserForm_Initialize() 'Em can thay doi doan code nay de lay ton kho cuoi ky (Dong 39 sheet7)
    SpeedOn
    Dim Lr, Lr6, i As Long, Sh, Ws As Worksheet
   
   
    Set Sh = Sheet6
    Set Ws = Sheet7
    Lr6 = Sh.Range("C" & Rows.Count).End(xlUp).Row
    Lr = Ws.Range("C20").End(xlUp).Row
    With Me
        If Lr6 > 2 Then
            Dim nR As Long, nC As Long, nN As Long, sArNXT39
           
            sArray = Sh.Range("C3:G" & Lr6).Value
            nR = UBound(sArray)
            nC = UBound(sArray, 2) + 1
            ReDim Preserve sArray(1 To nR, 1 To nC)
           
            sArNXT39 = Ws.Range("F39:KO39").Value
           
            If nR <= UBound(sArNXT39, 2) Then
                nN = nR
            Else
                nN = UBound(sArNXT39, 2)
            End If
           
            For i = 1 To nN
                sArray(i, nC) = sArNXT39(1, i)
            Next i
           
            .LbxThongTin.ColumnCount = 6
            .LbxThongTin.ColumnWidths = "60 pt;380 pt;30 pt;30 pt;50 pt;50 pt"
            .LbxThongTin.List() = sArray
           
        End If
        For i = 0 To .LbxThongTin.ListCount - 1
            .LbxThongTin.List(i, 4) = DinhDang(.LbxThongTin.List(i, 4))
        Next i
        .txtTimData.SetFocus
    End With
    SpeedOff
End Sub
* Nếu khác: thì phải dùng dictionary thì tương tự, tự làm

Dạ, em cám ơn @ppc0312
Code của anh đã đúng rồi ạ.
Để em phát triển thêm theo cách Dictionary xem có cho tốc độ nhanh hơn không.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom