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
    

      

  • 相关阅读:
    js格式化时间和时间操作
    java链接FTP实现上传和下载
    JQuery 对 Select option 的操作
    利用set实现去重
    数组去重的五个办法
    JavaScript实现360度全景图片展示效果
    对于行高(line-height)的一些理解
    Flex 布局教程:语法篇
    学习Javascript闭包
    MySQL explain字段解释
  • 原文地址:https://www.cnblogs.com/nextseven/p/7191888.html
Copyright © 2011-2022 走看看