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
20170716xlVba销售明细转销售单据的更多相关文章
- 销售及SAP销售业务方案思维导图
销售: SAP销售方案:
- SAP 成套销售&按项目销售
http://blog.sina.com.cn/s/blog_95ac31e30102x5we.html 分类: SAP_SD SAP 成套销售&按项目销售 一.业务简介 成套销售(KIT ...
- 快消品销售管理系统,PDA销售管理系统,销售拜访PDA,进销存管理PDA系统 移动扫描打印开单POS
各种ERP软件的移动订单及移动车销解决方案是针对各个需要快速.便捷的,通过智能PDA移动智能终端设备实现销售订单下达及快速车销的应用解决方案.通过将移动订单及移动车销集成到ERP的移动解决方案,可以帮 ...
- 调用SAP函数创建寄售退货订单的时候报错:业务对象 BUS2032 是销售订单,销售凭证类别 H 是退货。
RE.KR订单类型用BAPI_CUSTOMERRETURN_CREATE 其他用BAPI_SALESORDER_CREATEFROMDAT2
- PowerBI系列之入门案例动态销售报告
本文将讲解如何从零开始使用PowerBI Desktop制作一份动态销售报告.帮助大家快速入门PowerBI Desktop的操作.我们先来看一下一份动态销售报告的构成. 1.左上角放置了小黎子数据分 ...
- ecshop功能目录
右上 开店向导 1设置商店的一些基本信息 商店的名字.地址.配送方式.支付方式等 2给商店添加一些商品 商品的名称.数量.分类.品牌.价格.描述等 3恭喜您,您的网店可以使用了!下面是一些常用功能的链 ...
- 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值
https://zhuanlan.zhihu.com/p/64150720 本文学习PowerBI最重要的概念:度量值 初学Power BI一般都会对度量值比较困惑,毕竟对长期接触Excel的人来说, ...
- Netsharp快速入门(之13) 销售管理(单据流转 销售订单生成发货单)
作者:秋时 杨昶 转载须说明出处 4.5 单据流转 4.5.1 单据流转的目的 单据流转主要为了实现业务关系的流转,并记录相互之间的关系.例如从销售订单生成销货单,两张单据之间有对应的关 ...
- 改变传统的开单模式------手持POS终端移动销售开单 移动进销存的利器
手持POS终端高清彩屏,清晰.美观.大方,适用于仓库.超市.服装.食品.批发零售.手机电脑等企业管理.可与管理软件灵活对接.1:员工记不住价格,产品名称,只要有PDA扫描,价格,库存,直接开销售单,打 ...
随机推荐
- TensorFlow中的变量命名以及命名空间.
What: 在Tensorflow中, 为了区别不同的变量(例如TensorBoard显示中), 会需要命名空间对不同的变量进行命名. 其中常用的两个函数为: tf.variable_scope, t ...
- 定位性能问题的18个linux命令
1.TopTop命令是一个性能监控程序,它按一定的顺序显示所有正在运行而且处于活动状态的实时进程,而且会定期更新显示结果.这条命令显示了CPU的使用率.内存使用率.交换内存使用大小.高速缓存使用大小. ...
- NIO_2
导语 缓冲器的设计的是新IO模型中最基础的一部分.因为新IO模型中要求所有的IO操作都需要进行缓冲.在新的IO模型中,不再向输出流写入数据和从数据流中读取数据了,而是要从缓冲区中读写数据.缓冲区可是是 ...
- node.js cookie session使用教程
众所周知,HTTP 是一个无状态协议,所以客户端每次发出请求时,下一次请求无法得知上一次请求所包含的状态数据,如何能把一个用户的状态数据关联起来呢? cookie 首先产生了 cookie 这门技术来 ...
- pyDay4
内容来自廖雪峰的官方网站 1.关键字参数有什么用?它可以扩展函数的功能. 2.参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关键字参数和关键字参数. 3.对于任意函数,都可以通过类似func ...
- python百分号%—%s、%d、%f
百分号%表示占位符,在后续通过%传入真实的值 %s 拼接字符串,实际可以接受任何类型的值 %d 只能拼接整数数字 %.nf 四舍五入拼接浮点数,n表示保留到小数点后n位,不加.n默认保留6位小数 ...
- Jsoup解析网页html
Jsoup解析网页html 解析网页demo: 利用Jsoup获取截图中的数据信息: html代码片段: <!-- 当前基金档案\计算\定投\开户 start --> <div cl ...
- 关于STM32外接4—16MHz晶振主频处理方法
由于STM32F10x库官方采用的是默认的外接8MHz晶振,因此造成很多用户也采用了8MHz的晶振,但是,8MHz的晶振不是必须的,其他频点的晶振也是可行的,只需要在库中做相应的修改就行. 在论 ...
- .Family_物联网
群名称 : .Family_物联网 QQ群号: 群介绍 基于嵌入式,构建各通信模式,网关,平台软件,工业系统等领域,欢迎各位朋友加群,交流学习!
- RMQ 区间最大值 最小值查询
/*RMQ 更新最小值操作 By:draymonder*/ #include <iostream> #include <cstdio> using namespace std; ...