Anh chị ơi Giúp Code Phiếu nhập với. khi ghi thì bị đè lên phiếu trước ... Giúp mìnới (1 người xem)

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

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

chicpt

Thành viên mới
Tham gia
18/1/12
Bài viết
24
Được thích
4
[GPECODE=vb]Dim arrDG(), arrTK(), C_TU As String ' C_TU la dieu kien loc
Dim endR As Long, i As Long, k As Long, s As Long, n As Long
Dim rngNo As Range, rngCo As Range, rngDG As Range
Sub Loc_PhieuNhap()
Application.ScreenUpdating = False
Dim WsN As Worksheet
Dim WsD As Worksheet
Set WsN = Sheets("PN")
Set WsD = Sheets("DL")
With WsN
.AutoFilterMode = False
endR = .Range("m100").End(xlUp).Row
C_TU = WsN.Range("m5")
Set rngDG = .Range("a9:n" & endR)
Set rngNo = .Range("m9:m" & endR)
Set rngCo = .Range("n9:n" & endR)
End With
Dim rngData As Range
s = 0
Dim arrKQ(1 To 100, 1 To 14) ' ==== "TO" bao nhieu cot tren phieu can copy sang
Set rngData = Union(rngNo, rngCo)
arrTK = rngData.Value
arrDG = rngDG.Value
For i = 1 To UBound(arrTK)
If arrTK(i, 1) = C_TU Then
s = s + 1
arrKQ(s, 1) = arrDG(i, 1)
arrKQ(s, 2) = arrDG(i, 2)
arrKQ(s, 3) = arrDG(i, 3)
arrKQ(s, 4) = arrDG(i, 4)
arrKQ(s, 5) = arrDG(i, 5)
arrKQ(s, 6) = arrDG(i, 6)
arrKQ(s, 7) = arrDG(i, 7)
arrKQ(s, 8) = arrDG(i, 8)
arrKQ(s, 9) = arrDG(i, 9)
arrKQ(s, 10) = arrDG(i, 10)
arrKQ(s, 11) = arrDG(i, 11)
arrKQ(s, 12) = arrDG(i, 12)
arrKQ(s, 13) = arrDG(i, 13)
arrKQ(s, 14) = arrDG(i, 14)
End If
Next
If s = 0 Then Exit Sub
With WsD
With .Range("Bd")
.Resize(s, 14) = arrKQ
End With
End With
Set rngData = Nothing
Erase arrTK, arrKQ, arrDG
Application.ScreenUpdating = True
End Sub]

Trong file đính kèm mình có Sheet "PN" và Sheet "DL" nhờ các Pro xem giúp mình với. Mình tìm hoài nhưng chưa có cách nào làm được. Thân!:=\+[/GPECODE]Trong file đính kèm mình có Sheet "PN" và Sheet "DL" nhờ các Pro xem giúp mình với. Mình tìm hoài nhưng chưa có cách nào làm được. Thân!:=\+
 

File đính kèm

Lần chỉnh sửa cuối:
Nó thích chép đè là do câu lệnh này của bạn:

PHP:
   With WsD
        With .Range("Bd")            '<=|'
              .Resize(s, 14) = arrKQ
        End With
    End With

Mà trên trang tính của bạn Range("BD") là vị trí cố định.
Bạn cần Range("BD") linh động hơn!
(Chắc bạn tự sửa được với gợi í: Nếu muốn chép nối tiếp fía dưới,
mỗi lần trước khi chép ta cần xác định dòng cuối có dữ liệu của dữ liệu hiện có)

& nhắc bạn rằng đoạn mã trích dẫn trên nói lên rằng bạn đang lạm dụng With . . . . End With
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom