zoukankan      html  css  js  c++  java
  • 20170716xlVba销售明细转销售单据

    Sub CreateSaleList()
        AppSettings
    
        On Error GoTo ErrHandler
    
        Dim StartTime As Variant    '开始时间
        Dim UsedTime As Variant    '使用时间
        StartTime = VBA.Timer    '记录开始时间
    
        Dim Wb As Workbook
        Dim Sht As Worksheet
        Dim oSht As Worksheet
        Dim NewSht As Worksheet
        Dim iRow As Long
        Dim NewRow As Long
        Dim Dic As Object
        Dim Key As String
        Dim PageNo As Long
    
        Set Wb = Application.ThisWorkbook
    
        For Each oSht In Wb.Worksheets
            If oSht.Name <> "明细" And oSht.Name <> "模板" Then
                Debug.Print oSht.Name
                oSht.Delete
            End If
        Next oSht
    
        Set Sht = Wb.Worksheets("明细")
        Set oSht = Wb.Worksheets("模板")
    
        Set Dic = CreateObject("Scripting.Dictionary")
        With Sht
            iRow = 3
    
            Do While .Cells(iRow, 1).Value <> ""
                Key = .Cells(iRow, 1).Value
                Dic(Key) = Dic(Key) + 1
                PageNo = Int((Dic(Key) - 1) / 5) + 1
                NewName = Key & "(" & PageNo & ")"
                If Dic(Key) Mod 5 = 1 Then
                    '  On Error Resume Next
                    '  Wb.Worksheets(NewName).Delete
                    '  On Error GoTo 0
                    oSht.Copy After:=Wb.Worksheets(Wb.Worksheets.Count)
                    Set NewSht = Wb.Worksheets(Wb.Worksheets.Count)
                    NewSht.Name = Key & "(" & PageNo & ")"
                    NewSht.Range("B3").Value = .Cells(iRow, "C").Value
                    NewSht.Range("E3").Value = .Cells(iRow, "B").Value
                    NewSht.Range("G2").Value = NewSht.Range("G2").Value & .Cells(iRow, "A").Value
                    NewSht.Range("G3").Value = NewSht.Range("G3").Value & .Cells(iRow, "L").Value
                End If
    
                NewRow = 4 + (Dic(Key) - 1) Mod 5 + 1
    
                NewSht.Cells(NewRow, 1).Value = .Cells(iRow, 6).Value
                NewSht.Cells(NewRow, 2).Value = .Cells(iRow, 7).Value
                NewSht.Cells(NewRow, 3).Value = .Cells(iRow, 8).Value
                NewSht.Cells(NewRow, 4).Value = .Cells(iRow, 11).Value
                NewSht.Cells(NewRow, 5).Value = .Cells(iRow, 10).Value
                NewSht.Cells(NewRow, 6).Value = .Cells(iRow, 13).Value
                NewSht.Cells(NewRow, 7).Value = .Cells(iRow, 9).Value
    
                iRow = iRow + 1
                If iRow = 60 Then Exit Do  '防止死循环
            Loop
        End With
    
        Set Wb = Nothing
        Set Sht = Nothing
        Set oSht = Nothing
        Set NewSht = Nothing
    
        AppSettings False
    
        UsedTime = VBA.Timer - StartTime
        MsgBox "本次运行耗时:" & Format(UsedTime, "#0.0000秒")
    ErrorExit:
        AppSettings False
        Exit Sub
    ErrHandler:
        If Err.Number <> 0 Then
            MsgBox Err.Description & "!", vbCritical, "QQ 84857038"
            Debug.Print Err.Description
            Err.Clear
            Resume ErrorExit
        End If
    
    End Sub
    
    
    Public Sub AppSettings(Optional IsStart As Boolean = True)
        If IsStart Then
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False
            Application.Calculation = xlCalculationManual
            Application.StatusBar = ">>>>>>>>Macro Is Running>>>>>>>>"
        Else
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True
            Application.Calculation = xlCalculationAutomatic
            Application.StatusBar = False
        End If
    End Sub
    

      

  • 相关阅读:
    [哈希][倍增] Jzoj P5856 01串
    [exgcd] Jzoj P5855 吃蛋糕
    [折半搜索][分治][二分] Jzoj P5851 f
    [lca][主席树] Jzoj P5850 e
    [二分][树状数组] Jzoj P5849 d
    [容斥] Jzoj P5843 b
    [前缀和][枚举] Jzoj P5842 a
    [平衡规划][模拟][前缀和] Jzoj P4724 斐波那契
    [spfa] Jzoj P4722 跳楼机
    [模拟] Jzoj P2499 东风谷早苗
  • 原文地址:https://www.cnblogs.com/nextseven/p/7191888.html
Copyright © 2011-2022 走看看