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
    

      

  • 相关阅读:
    对象结构型
    对象结构型
    对象行为型模式
    定时任务(二)
    定时任务(一)
    kill端口-更新sql-添加字段
    获取ip和端口号
    List集合中的末位元素置首位
    首页报表数据展示(一)
    具体的类中包括枚举类写法
  • 原文地址:https://www.cnblogs.com/nextseven/p/7191888.html
Copyright © 2011-2022 走看看