Nguyễn Văn Hoàng
Nguyễn Văn Hoàng
Thảo luận 2 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 141 lượt xem

Chào ạ cho e chút E có đoạn cod để lưu phiếu nhập kho như bên dưới mỗi

Chào thầy ạ, thầy cho e hỏi chút với ạ. E có đoạn cod để lưu phiếu nhập kho như bên dưới, mỗi lần lưu e tính cũng mất 10 giây ạ (dữ liệu data của e là 20.000 dòng), Liệu có cách nào để cod chạy nhanh hơn không ạ. e cảm ơn thầy


Sub PNK_Save()

 Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

Application.EnableEvents = False

Application.DisplayStatusBar = False

   Dim DongCuoi As Long

    DongCuoi = Sheet3.Range("B" & Rows.Count).End(xlUp).Row

  Dim DongCuoi_MaHang As Long

   Dim DongCuoi_SoLuong As Long

    

    DongCuoi_MaHang = Sheet5.Range("C" & Rows.Count).End(xlUp).Row

    DongCuoi_SoLuong = Sheet5.Range("I32").Value

    

    'Khai bao bien

    Dim sh_PNK As Worksheet

    Set sh_PNK = Sheets("PNK")

    

    Dim tTime As Double

    tTime = Timer

     'Mo khoa sheet

    Sheet3.Unprotect Password:="1991"

    'Kiem tra loi truoc khi luu

    If Sheet5.Range("D4").Value = "" Then         'Loi chua nhap Ngay

        MsgBox "Chua nhap ngay"

        Exit Sub

    ElseIf Sheet5.Range("P4").Value = "" Then

        MsgBox "Chua nhap noi nhan"

       Exit Sub


    ElseIf Sheet5.Range("P5").Value = "" Then

       MsgBox "Chua nhap nguoi nhan"

        Exit Sub

    ElseIf Sheet5.Range("D6").Value = "" Then

        MsgBox "Chua nhap nguoi giao"

        Exit Sub

    ElseIf DongCuoi_MaHang = 8 Then  'Chua co ma hang

       MsgBox "Ban chua nhap vat tu"

        Exit Sub

    ElseIf DongCuoi_SoLuong = 0 Then  'Chua co so luong

        MsgBox "Ban chua nhap so luong"

        Exit Sub

    ElseIf Sheet5.Range("R1").Value = "" Then

        MsgBox "Chua nhap so quyen"

        Exit Sub

    ElseIf Sheet5.Range("R2").Value = "" Then

        MsgBox "Chua nhap so phieu"

        Exit Sub 

    Else

       Call Tat_TB

  

        Dim i As Integer

        For i = 10 To DongCuoi_MaHang

      

          If Sheets("PNK").Range("C" & i) <> "" Then

              With Sheets("Data_NhapXuat")

                    .Range("B" & DongCuoi + 1).Value = sh_PNK.Range("Y1").Value         'Loai phieu

                    .Range("C" & DongCuoi + 1).Value = sh_PNK.Range("R1").Value         'So quyen

                    .Range("D" & DongCuoi + 1).Value = sh_PNK.Range("R2").Value         'So phieu

                    .Range("E" & DongCuoi + 1).Value = sh_PNK.Range("D4").Value         'Ngay lap

                    .Range("F" & DongCuoi + 1).Value = sh_PNK.Range("G" & i).Value      'Loai vat tu

                    .Range("G" & DongCuoi + 1).Value = sh_PNK.Range("F" & i).Value       'Kho xuat

                    .Range("H" & DongCuoi + 1).Value = sh_PNK.Range("P4").Value         'Kho nhap

                    .Range("I" & DongCuoi + 1).Value = sh_PNK.Range("D6").Value         'Nguoi giao

                    .Range("j" & DongCuoi + 1).Value = sh_PNK.Range("P5").Value         'Nguoi nhan

                    .Range("k" & DongCuoi + 1).Value = sh_PNK.Range("B" & i).Value      'So dong

                    .Range("L" & DongCuoi + 1).Value = sh_PNK.Range("C" & i).Value      'Ma hang

                    .Range("M" & DongCuoi + 1).Value = sh_PNK.Range("D" & i).Value      'Ten hang

                    .Range("N" & DongCuoi + 1).Value = sh_PNK.Range("E" & i).Value      'dvt

                    .Range("O" & DongCuoi + 1).Value = sh_PNK.Range("I" & i).Value      'So luong

                    .Range("P" & DongCuoi + 1).Value = sh_PNK.Range("O" & i).Value      'Don gia

                    .Range("Q" & DongCuoi + 1).Value = sh_PNK.Range("P" & i).Value      'Thanh tien

                    .Range("R" & DongCuoi + 1).Value = sh_PNK.Range("J" & i).Value      'Thue suat

                    .Range("S" & DongCuoi + 1).Value = sh_PNK.Range("K" & i).Value      'Chiet khau

                    .Range("T" & DongCuoi + 1).Value = sh_PNK.Range("Q" & i).Value      'Thanh tien sau thue

                    .Range("U" & DongCuoi + 1).Value = sh_PNK.Range("P6").Value         'Xe van chuyen

                    .Range("V" & DongCuoi + 1).Value = sh_PNK.Range("R" & i).Value      'Ghi chu

                    .Range("W" & DongCuoi + 1).Value = sh_PNK.Range("T" & i).Value      'Ma chi phi

                    .Range("X" & DongCuoi + 1).Value = sh_PNK.Range("P4").Value         'Du an

                    .Range("Y" & DongCuoi + 1).Value = sh_PNK.Range("H" & i).Value      'Phan tach chi phi

                    .Range("Z" & DongCuoi + 1).Value = sh_PNK.Range("L" & i).Value      'So de xuat vat tu

                    .Range("AB" & DongCuoi + 1).Value = sh_PNK.Range("S" & i).Value     'Trong luong don hang

        End With

                DongCuoi = DongCuoi + 1

            End If

       Next i

       Call Data_NhapXuat_Sort  

       Call PNK_Reset

               MsgBox "Cam on ban! Du lieu da duoc luu"

        Call Bat_TB

    End If

          Sheet3.Protect Password:="1991"

    

         Debug.Print "-TIME is: " & Timer - tTime

    Application.Calculation = xlCalculationAutomatic

    Application.ScreenUpdating = True

    Application.EnableEvents = True

    Application.DisplayStatusBar = True

 

End Sub

Thảo luận 2 câu trả lời
Lượt xem 141 lượt xem
Vỗ tay vỗ tay
Nguyễn Văn Hoàng 09:05 - May 06, 2022

Chào bạn muốn lưu nhanh bạn phải học về mảng hoặc là sql bạn có thể xem thêm ở khoá VBAG02

https://by.com.vn/

Vỗ tay vỗ tay
Nguyễn Văn Hoàng 16:05 - May 06, 2022

Vâng e cảm ơn thầy ạ

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông