Lỗi VBA lọc dữ liệu (1 người xem)

  • Thread starter Thread starter GTK-PM
  • Ngày gửi Ngày gửi
Liên hệ QC

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

GTK-PM

Thành viên thường trực
Tham gia
10/11/13
Bài viết
313
Được thích
15
Mã:
Option Explicit




Public Sub BC_HangMuc()
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Rws As Long
Dim KQ, Tam, T As Long
Dim fDate As Long, eDate As Long, MaHM As String, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("BC HANGMUC")
    fDate = .Range("G6").Value
    eDate = .Range("G7").Value
    MaHM = .Range("J6").Value
End With
'-----------------------------------------------
With Sheets("DANHMUC")
    sArr = .Range("C7", .Range("C65000").End(xlUp)).Resize(, 4).Value
End With
ReDim dArr(1 To UBound(sArr), 1 To 8)
For I = 1 To UBound(sArr)
    If sArr(I, 1) <> Empty Then
        K = K + 1: dArr(K, 1) = K
        Dic.Item(sArr(I, 1)) = K
        For J = 1 To 3
            dArr(K, J + 1) = sArr(I, J)
        Next J
    End If
Next I
'-----------------------------------------------
With Sheets("NHAP")
    sArr = .Range("D10", .Range("D10").End(xlDown)).Resize(, 16).Value
End With
For I = 1 To UBound(sArr)
    If sArr(I, 1) <= eDate Then
    If sArr(I, 1) >= fDate Then
    If sArr(I, 16) = MaHM Then
        If Dic.Exists(sArr(I, 3)) Then
            Rws = Dic.Item(sArr(I, 3))
            dArr(Rws, 6) = dArr(Rws, 6) + sArr(I, 13)
            dArr(Rws, 8) = dArr(Rws, 6) - dArr(Rws, 7)
        End If
    End If
    End If
    End If
Next I
'--------------------------------------------
With Sheets("XUAT")
    sArr = .Range("D10", .Range("D10").End(xlDown)).Resize(, 15).Value
End With
For I = 1 To UBound(sArr)
    If sArr(I, 1) <= eDate Then
    If sArr(I, 1) >= fDate Then
    If sArr(I, 15) = MaHM Then
        If Dic.Exists(sArr(I, 3)) Then
            Rws = Dic.Item(sArr(I, 3))
            dArr(Rws, 7) = dArr(Rws, 7) + sArr(I, 12)
            dArr(Rws, 8) = dArr(Rws, 6) - dArr(Rws, 7)
        End If
    End If
    End If
    End If
Next I
'---------------------------------------------
ReDim KQ(1 To K + 1, 1 To 8)
    For I = 1 To K
        Tam = 0
        For J = 5 To 8
            Tam = Tam + dArr(I, J)
        Next J
        If Tam > 0 Then
            T = T + 1
                KQ(T, 1) = T
            For J = 2 To 8
                KQ(T, J) = dArr(I, J)
            Next J
        End If
    Next I
'-----------------------
With Sheets("BC HANGMUC")
    .Range("B12").Resize(450, 8).ClearContents
   [COLOR=#ff0000][B] .Range("B12").Resize(T, 8) = KQ[/B][/COLOR]
    Rows("12:450").Hidden = False
    Rows([B450].End(xlUp).Offset(1).Row & ":450").Hidden = True
        
End With
Set Dic = Nothing
End Sub

Xin hỏi lỗi mình đang bị là như thế nào vậy, và nhờ các bạn giúp đỡ mình cách sửa code trên !

Ảnh báo lỗi !
loiloi34.jpg


Link file lỗi đây : http://www.mediafire.com/download/ca5uz9vcnpkx9u6/KHO_DONGTHINH+T7+1.xlsm
 
Lần chỉnh sửa cuối:
Bạn up file lên chứ không có dữ liệu làm sao biết nguyên nhân gây lỗi -+*/
 
Upvote 0
Bạn sửa thành vầy coi sao:
Mã:
[B] On Error Resume Next
.Range("B12").Resize(T, 8).[COLOR=#ff0000][SIZE=3]Value[/SIZE][/COLOR] = KQ
[/B]
 
Lần chỉnh sửa cuối:
Upvote 0
Mã:
Option Explicit

Public Sub BC_HangMuc()
-----------------------------------------------

End Sub

Xin hỏi lỗi mình đang bị là như thế nào vậy, và nhờ các bạn giúp đỡ mình cách sửa code trên !

Ảnh báo lỗi !
View attachment 162125

Tôi đã có góp ý với bạn là, khi hỏi code sai phải có file để người khác có thể xem xét khi chạy thử code.
Bạn cứ đưa code lên, đâu ai rảnh để đọc từng dòng lệnh rồi tưởng tượng ra kết quả.
Code này từ bạn đầu bài của bạn hỏi không rõ, tôi viết lấy tất tần tật Danh mục, rồi gán số liệu vào.
Sau đó bạn (hay ai đó) chèn thêm để loại bỏ những dòng không có số liệu, phải vậy không?
Dựa vào file trước đây tôi đã trả lời bạn, bây giờ chỉnh lại như vầy, nếu chạy được thì tốt.
PHP:
Public Sub BC_HangMuc()
Dim Dic As Object, sArr(), dArr(1 To 500, 1 To 9), I As Long, K As Long, Rws As Long
Dim fDate As Long, eDate As Long, MaHM As String, Tem As String
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("BC HANGMUC")
    fDate = .Range("G6").Value
    eDate = .Range("G7").Value
    MaHM = .Range("J6").Value
End With
'-----------------------------------------------'
With Sheets("NHAP")
    sArr = .Range("D10", .Range("D10").End(xlDown)).Resize(, 16).Value
End With
For I = 1 To UBound(sArr)
    If sArr(I, 1) <= eDate Then
    If sArr(I, 1) >= fDate Then
    If sArr(I, 16) = MaHM Then
        If Not Dic.Exists(sArr(I, 3)) Then
            K = K + 1: dArr(K, 1) = K
            Dic.Item(sArr(I, 3)) = K
            dArr(K, 2) = sArr(I, 3)
            dArr(K, 3) = sArr(I, 2)
            dArr(K, 4) = sArr(I, 11)
        End If
            Rws = Dic.Item(sArr(I, 3))
            dArr(Rws, 6) = dArr(Rws, 6) + sArr(I, 13)
            dArr(Rws, 8) = dArr(Rws, 6) - dArr(Rws, 7)
    End If
    End If
    End If
Next I
'--------------------------------------------'
With Sheets("XUAT")
    sArr = .Range("D10", .Range("D10").End(xlDown)).Resize(, 15).Value
End With
For I = 1 To UBound(sArr)
    If sArr(I, 1) <= eDate Then
    If sArr(I, 1) >= fDate Then
    If sArr(I, 15) = MaHM Then
        If Dic.Exists(sArr(I, 3)) Then
            Rws = Dic.Item(sArr(I, 3))
            dArr(Rws, 7) = dArr(Rws, 7) + sArr(I, 12)
            dArr(Rws, 8) = dArr(Rws, 6) - dArr(Rws, 7)
        End If
    End If
    End If
    End If
Next I
'-----------------------------------------------'
With Sheets("BC HANGMUC")
    .Rows("12:500").EntireRow.Hidden = False
    .Range("A12:J500").ClearContents
    If K Then
        .Range("B12").Resize(K, 8) = dArr
    Else
        MsgBox "Khong co so lieu.", , "GPE"
    End If
    .Rows(12 + K & ":500").EntireRow.Hidden = True
End With
Set Dic = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Lỗi gì mà lỗi. Tại J6 bạn chọn hạn mục không có phát sinh lấy gì nó ra kết quả mà không bị lỗi...
Nếu muốn hạn mục không phát sinh vẫn không báo lỗi...thì thay đổi câu lệnh lỗi đó thành...
Mã:
If T Then .Range("B12").Resize(T, 8).value = KQ
OK cảm ơn bạn mình đã sửa được rồi, nhờ bạn thêm cho mình code msg box
 
Upvote 0
@Bate: Cảm ơn bạn đã viết code như ý của mình, giờ còn chút vấn đề để mình sửa lại cho hoàn chỉnh thôi
 
Upvote 0
Nhờ các bạn cho mình thêm code MSG BOX khi không có dữ liệu để phù hợp với báo cáo này
 
Upvote 0
Nhờ các bạn cho mình thêm code MSG BOX khi không có dữ liệu để phù hợp với báo cáo này

Tôi đã gởi code bài#6, ý kiến của bạn ở bài #7 và bài #8 với yêu cầu của bài #9 có mâu thuẫn không?
Ý bạn muốn "báo cáo này" là báo cáo nào?
 
Upvote 0
Tôi đã gởi code bài#6, ý kiến của bạn ở bài #7 và bài #8 với yêu cầu của bài #9 có mâu thuẫn không?
Ý bạn muốn "báo cáo này" là báo cáo nào?
Mã:
[COLOR=#0000BB][FONT=monospace]With Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"BC HANGMUC"[/FONT][/COLOR][COLOR=#007700][FONT=monospace])
    .[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Rows[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"12:500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]EntireRow[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Hidden [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]False
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Range[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"A12:J500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]ClearContents
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace]If [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K Then
        [/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Range[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"B12"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Resize[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K[/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]8[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]dArr
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace]Else
        [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]MsgBox [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"Khong co so lieu."[/FONT][/COLOR][COLOR=#007700][FONT=monospace], , [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"GPE"
    [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]End [/FONT][/COLOR][COLOR=#007700][FONT=monospace]If
    .[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Rows[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]12 [/FONT][/COLOR][COLOR=#007700][FONT=monospace]+ [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K [/FONT][/COLOR][COLOR=#007700][FONT=monospace]& [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]":500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]EntireRow[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Hidden [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]True
End With
Set Dic [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Nothing
End Sub  [/FONT][/COLOR]



Code trên của Bate chưa có ẩn những hàng không có dữ liệu,

Hiện tại mình đang có code, nhờ bạn viết thêm msg box vào code bên dưới !

Mã:
With Sheets("BC HANGMUC")    .Range("B12").Resize(450, 8).ClearContents
    If T Then .Range("B12").Resize(T, 8).Value = KQ
    Rows("12:450").Hidden = False
    Rows([B450].End(xlUp).Offset(1).Row & ":450").Hidden = True
        
End With
Set Dic = Nothing
End Sub
 
Upvote 0
Mã:
[COLOR=#0000BB][FONT=monospace]With Sheets[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"BC HANGMUC"[/FONT][/COLOR][COLOR=#007700][FONT=monospace])
    .[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Rows[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"12:500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]EntireRow[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Hidden [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]False
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Range[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"A12:J500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]ClearContents
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace]If [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K Then
        [/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Range[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"B12"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Resize[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K[/FONT][/COLOR][COLOR=#007700][FONT=monospace], [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]8[/FONT][/COLOR][COLOR=#007700][FONT=monospace]) = [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]dArr
    [/FONT][/COLOR][COLOR=#007700][FONT=monospace]Else
        [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]MsgBox [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"Khong co so lieu."[/FONT][/COLOR][COLOR=#007700][FONT=monospace], , [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]"GPE"
    [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]End [/FONT][/COLOR][COLOR=#007700][FONT=monospace]If
    .[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Rows[/FONT][/COLOR][COLOR=#007700][FONT=monospace]([/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]12 [/FONT][/COLOR][COLOR=#007700][FONT=monospace]+ [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]K [/FONT][/COLOR][COLOR=#007700][FONT=monospace]& [/FONT][/COLOR][COLOR=#DD0000][FONT=monospace]":500"[/FONT][/COLOR][COLOR=#007700][FONT=monospace]).[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]EntireRow[/FONT][/COLOR][COLOR=#007700][FONT=monospace].[/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Hidden [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]True
End With
Set Dic [/FONT][/COLOR][COLOR=#007700][FONT=monospace]= [/FONT][/COLOR][COLOR=#0000BB][FONT=monospace]Nothing
End Sub  [/FONT][/COLOR]



Code trên của Bate chưa có ẩn những hàng không có dữ liệu,

Hiện tại mình đang có code, nhờ bạn viết thêm msg box vào code bên dưới !

Mã:
With Sheets("BC HANGMUC")    .Range("B12").Resize(450, 8).ClearContents
    If T Then .Range("B12").Resize(T, 8).Value = KQ
    Rows("12:450").Hidden = False
    Rows([B450].End(xlUp).Offset(1).Row & ":450").Hidden = True
        
End With
Set Dic = Nothing
End Sub
Hình như bạn không cho Run thử code và xem kết quả sau khi Run?
Đây là file với code vừa gởi, bạn cho biết dòng nào là không có dữ liệu, và MsgBox có hoạt động không?
Chẳng hiểu bạn muốn gì.
--------------------------------
Bạn chỉ đưa code cho sheet BC HANGMUC thôi nhé, các sheet khác tôi không biết. (Vì bạn không yêu cầu)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hình như bạn không cho Run thử code và xem kết quả sau khi Run?
Đây là file với code vừa gởi, bạn cho biết dòng nào là không có dữ liệu, và MsgBox có hoạt động không?
Chẳng hiểu bạn muốn gì.
--------------------------------
Bạn chỉ đưa code cho sheet BC HANGMUC thôi nhé, các sheet khác tôi không biết. (Vì bạn không yêu cầu)


Cảm ơn bác, em đã hoàn thiện được file rồi ! chúc bác vui vẻ
 
Upvote 0
Web KT

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

Back
Top Bottom