签到表模板
excel模板填写数据,打印后自动保存到另外一个表中,并清空本模板数据,怎么实现呢?关于通过Excel模板填写数据,打印后自动保存到另外一个表中,并清空本模板数据的问题,可以通过VBA写
excel模板填写数据,打印后自动保存到另外一个表中,并清空本模板数据,怎么实现呢?
关于通过Excel模板填写数据,打印后自动保存到另外一个表中,并清空本模板数据的问题,可以通过VBA写程序来实现,但是,这种需求基本都要求个性化定制开发,因此,通常 不会有详细的教程。因此,如果你希望实现类似的功能,建议如下:
1、花点儿钱请人完成并帮忙跟进维护(出问题及时解决,以及以后不断改进);
2、自己学VBA,然后上网找一些近似的案例来参考,然后根据自己的需要进行开发。
对于以上提及的第2点,我曾用VBA开发的一个库存信息管理系统的案例供参考。功能包括开单发货、收货入账、库存查询、调整改单等,如下图所示:
其中您提及的按Excel模板填写数据,打印后自动保存到另外一个表中,并清空本模板数据的问题,跟其中的“开单发货”或“收货入账”功能十分类似,以其中“开单发货”为例进行说明。
具体模板及功能按钮设计如下图所示:
其中橙色空格为可填写位置,同行相关内容会自动带出,填写完毕后,单击“打单发货”,会连接打印机打印该单据,然后,将相应的数据写入到收发货表里,如下图所示:
其中,“打单发货”功能的核心代码如下:
Sub 开单发货()
' 将发货单数据添加到收发货表并打印单据
' On Error GoTo ErrProcess
Call UnlockWorksheet(DecisionSupport)
Call UnlockWorksheet(InOutData)
'===================================判断发货单信息是否已完整================================
'
If Range("B3").Value = "" Then
MsgBox "亲,未选择客户,你到底要把货发给谁呢?", vbOKOnly, "订单信息不完整"
Range("B3").Select
Exit Sub
ElseIf Range("E3").Value = "" Then
MsgBox "亲,不填写订单日期会导致做账不准的哦。", vbOKOnly, "订单信息不完整"
Range("E3").Select
Exit Sub
Else '判断产品信息是否完整
Dim rowOfGoods As Integer
'判断产品信息中的第一行(row(5))是否完整
rowOfGoods = 5
If Application.WorksheetFunction.CountA(Range("A" & rowOfGoods & ":H" & rowOfGoods)) <= 3 Then
MsgBox "亲,订单必须包含至少一个产品信息,并且应从第5行起按顺序填写的哦!", vbOKOnly, "订单信息不完整"
Range("B" & rowOfGoods).Select
Exit Sub
Else
If Range("B" & rowOfGoods).Value = "" Or Range("C" & rowOfGoods).Value = "" Or Range("D" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行产品信息不完整,应包含【系列、名称、颜色】的哦!", vbOKOnly, "订单信息不完整"
Range("B" & rowOfGoods).Select
Exit Sub
ElseIf Range("F" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行未输入产品数量哦!", vbOKOnly, "订单信息不完整"
Range("F" & rowOfGoods).Select
Exit Sub
ElseIf Range("G" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行未输入产品价格哦!", vbOKOnly, "订单信息不完整"
Range("G" & rowOfGoods).Select
Exit Sub
End If
End If
'判断产品信息中的其他行(row(6-13))如果有信息的话是否完整
For rowOfGoods = 6 To 13
If Application.WorksheetFunction.CountA(Range("A" & rowOfGoods & ":H" & rowOfGoods)) > 3 And Application.WorksheetFunction.CountA(Range("A" & rowOfGoods - 1 & ":H" & rowOfGoods - 1)) > 3 Then
If Range("B" & rowOfGoods).Value = "" Or Range("C" & rowOfGoods).Value = "" Or Range("D" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行产品信息不完整,应包含【系列、名称、颜色】的哦!", vbOKOnly, "订单信息不完整"
Range("B" & rowOfGoods).Select
Exit Sub
ElseIf Range("F" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行未输入产品数量哦!", vbOKOnly, "订单信息不完整"
Range("F" & rowOfGoods).Select
Exit Sub
ElseIf Range("G" & rowOfGoods).Value = "" Then
MsgBox "亲,第" & rowOfGoods & "行未输入产品价格哦!", vbOKOnly, "订单信息不完整"
Range("G" & rowOfGoods).Select
Exit Sub
End If
'中间有空行的提示
ElseIf Application.WorksheetFunction.CountA(Range("A" & rowOfGoods & ":H" & rowOfGoods)) > 3 And Application.WorksheetFunction.CountA(Range("A" & rowOfGoods - 1 & ":H" & rowOfGoods - 1)) <= 3 Then
MsgBox "亲,第" & rowOfGoods - 1 & "行产品信息为空,会给客户很不好的印象的哦!", vbOKOnly, "订单信息不规范"
Exit Sub
End If
Next
End If
'===================================自动生成发货单订单编号================================
'发货单订单编号格式: "F"+"yyyymmdd"+三位序列号,如2012年3月1日第2张发货单,订单编号为:F20120301002
'订单编号由系统自动生成,其中所用"yyyymmdd"不一定与订单日期一致,由此可体现单据是否当天完成等情况
Dim orderNumber As String
Dim yearOfDate As String
Dim monthOfDate As String
Dim dayOfDate As String
Dim lastOrderDate As Date
Dim lastOrderNumber As Integer
'取得制单当天年月日
yearOfDate = Str(Year(Date))
yearOfDate = Right(yearOfDate, 4)
monthOfDate = Str(Month(Date))
If Len(monthOfDate) = 2 Then
monthOfDate = "0" & Right(monthOfDate, 1)
Else
monthOfDate = Right(monthOfDate, 2)
End If
dayOfDate = Str(Day(Date))
If Len(dayOfDate) = 2 Then
dayOfDate = "0" & Right(dayOfDate, 1)
Else
dayOfDate = Right(dayOfDate, 2)
End If
'生成订单编号前段
orderNumber = "F" & orderNumber & yearOfDate & monthOfDate & dayOfDate
lastOrderDate = DecisionSupport.Range("J3").Value
lastOrderNumber = DecisionSupport.Range("K3").Value
'判断前期所用订单编号情况,并将新的订单编号情况更新到最后订单编号记录(决策信息表中的J3:K3中)
If lastOrderDate = Date Then
lastOrderNumber = lastOrderNumber + 1
If lastOrderNumber < 10 Then
orderNumber = orderNumber & "00" & lastOrderNumber
ElseIf lastOrderNumber < 100 Then
orderNumber = orderNumber & "0" & lastOrderNumber
Else
orderNumber = orderNumber & lastOrderNumber
End If
DecisionSupport.Range("K3").Value = lastOrderNumber
Else
DecisionSupport.Range("J3").Value = Date
DecisionSupport.Range("K3").Value = 1
orderNumber = orderNumber & "001"
End If
'将订单编号填写到发货单中一并打印
Bill.Range("H3").Value = orderNumber
Bill.Range("I15").Value = getOperatorName()
'设置屏幕不更新,加快程序执行速度
Application.ScreenUpdating = False
'==============================================清除发货单提醒颜色============================================
Call 清除发货单提醒颜色
'==================================================打印发货单================================================
'要求预先设置好默认打印机
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
'=========================================导入发货数据到收发货汇总表=========================================
'=== 为避免打印出错时数据已导入,因此改为在打印后再导入数据 ===
Dim startRowNumber As Integer
Dim OrderItems As Integer
Dim i As Integer
startRowNumber = Application.WorksheetFunction.CountA(InOutData.Range("G:G"))
OrderItems = Application.WorksheetFunction.CountA(Bill.Range("C5:C13"))
For i = 1 To OrderItems
InOutData.Range("C" & startRowNumber + i).Value = getOperatorName()
InOutData.Range("D" & startRowNumber + i).Value = Bill.Range("E3").Value
InOutData.Range("E" & startRowNumber + i).Value = Bill.Range("H3").Value
InOutData.Range("F" & startRowNumber + i).Value = Bill.Range("B" & 4 + i).Value
InOutData.Range("G" & startRowNumber + i).Value = Bill.Range("C" & 4 + i).Value
InOutData.Range("H" & startRowNumber + i).Value = Bill.Range("D" & 4 + i).Value
InOutData.Range("I" & startRowNumber + i).Value = Bill.Range("B3").Value
InOutData.Range("J" & startRowNumber + i).Value = "发货"
InOutData.Range("K" & startRowNumber + i).Value = -Bill.Range("F" & 4 + i).Value
InOutData.Range("L" & startRowNumber + i).Value = Bill.Range("G" & 4 + i).Value
Next i
'================================================清除发货单内容==============================================
'
Call 清除发货单内容
'==============================================恢复发货单提醒颜色=============================================
'
Call 恢复发货单提醒颜色
'恢复选定单元格到选择客户位置(B3),并设置程序屏幕为可更新
Range("B3").Select
Application.ScreenUpdating = True
Call LockWorksheet(DecisionSupport)
Call LockWorksheet(InOutData)
Exit Sub
'ErrProcess:
' MsgBox "系统【开单发货功能】发生错误,请与系统开发人员联系。" , vbOKOnly, "程序错误"
' Call 清除发货单内容
' Call 恢复发货单提醒颜色
End Sub
其中包含多个数据校验和调用相关清空数据、恢复背景颜色等过程,可根据实际需要自行编写。
总的来说,类似VBA的应用可以做到非常灵活,但是,基本都需要按照自己的需要进行单独的开发。一般建议如果自身没有开发能力,尽可能找有技术的人员帮忙开发和持续跟进运维。
更多精彩内容,尽在【Excel到PowerBI】
我是大海,微软认证Excel专家,企业签约Power BI顾问
让我们一起学习,共同进步!
足球完美前锋模板是谁?
足球场上,同是前锋,但风格迥异。有灵巧型前锋,比如梅西;有站桩型前锋,比如克劳奇、佩莱;还有速度型前锋奥巴梅扬,抢点型前锋范尼……总之,前锋的种类有很多,每一种前锋都有他的用武之地,也有他的不足之处。但如果要选一名完美前锋,那应该是巴西射手罗纳尔多了,也就是我们大家俗称的“外星人”。
大罗有速度,这是毋庸置疑的,他的个人能力相当突出,脚下活非常地细腻,同时他在门前的抢点也极为犀利,更可怕的是,他的身体素质也不差,在与对手后卫的对抗中并不落下风。综合而言,罗纳尔多应该是世界足坛迄今为止非常全面的一名前锋了,可以将他视为完美前锋的模板。
从罗纳尔多的绰号“外星人”就可以得知,这名前锋与凡人不同。他最大的特点是在高速带球中仍然能够完成高难度的技术动作,这种本领,罗纳尔多是足球史上做得最好的。速度快的前锋很多,但能够在高速跑动中做出高难度技术动作的球员却非常罕见。罗纳尔多的假动作,有时候很难令对手看清,只能比赛结束后通过慢动作看看录像回放。
以罗纳尔多的特点可以总结出一名出色前锋应具有的能力:首先是把握机会的能力,当队友为你创造出机会后,你不能白白浪费掉。其次,是门前嗅觉,这大多数都是与生俱来的,出色的射手必须要有门前嗅觉,知道什么时候该出现在什么位置,也就是我们通常所说的门前意识。第三,是身体素质,如果仅凭速度和技术,在现代足球中是很难生存的,必须要拥有足以与对手后卫抗衡的身体。除此之外,最好还要有速度、有带球能力、脚下技术出色,爆发力好,当然,以上条件都拥有的前锋,这么多年来也就只有罗纳尔多一人,在他退役之后,所有人都在等待下一个完美前锋的横空出世。
今日头条怎样签到?
你一打开今日头条,你就签到。只要你打开,不论你看没看,理没理,都一样认为你在阅读,一样有阅读奖,你可以揖出做公益。行善积德。
既然签到,那有不看,不说,不评论,不点赞之理。遇到臭味相投,情投意合,合眼缘,合心水,靓女,帅哥,老翁,姑妈,师奶,老婆子,富婆,贵妇,富翁,恶女,就点关注。
开心点个赞,心情差就尽量喷。
有开心,高兴,好事,奇闻,怪事,分分亨,让网友跟着,开开心,乐一乐。遇到难题,头痛事,还可以,请教头条的知者,高手,有识至士,评论,解答。
一有空,你就快打开今日头条,看看,不打开你会错过好多开心事,好机会。……
记住,记谨,不论好坏都要点赞啊。
怎么样利用Excel签到?
如何用Excel快速计算员工的出勤率
举例:这是从公司考勤系统倒出来的数据。具体表格效果如下:
如果快速算出员工每月的考勤次数呢?最快应该是用透视表。赶紧试试。
为了方便看到效果,把透视表建在了本表,详见动图操作。
接着注意动图的字段拖拽部分,把签到日字段作为个数统计的字段。
如果发现透视表没有自动按月来进行,则需要利用组合功能来搞定。具体看动图操作。
有了每月的出勤率统计,可以算出考勤率,除以每月所有的考勤数,即可得到,假如每个月满考勤是52次,这操作如下:
奇怪,怎么拖拽来下数字都是一样的。问题出在这里,需要关闭透视表的抓取数据的函数开关,才能这样计算。再次看动图操作。
如果在做成柱形图,就很容易看出这个员工在每月的考勤率了,原来9月,10月考勤最差。
总结:注意这个案例只是提供一个思路,如果需要做到精准考勤,需要考虑每天考勤的次数,准确度,每月考情总次数等因数,在整理好原始数据之后在利用透视表进行快速汇总才会事半功倍。
更多财税职场学习资讯,关注秀财网
如何套用PPT模板?
感谢邀请、干货分享、绝不私藏~
我是明哥,前麦肯锡战略咨询顾问,埃森哲管理咨询顾问,一个喜欢用思维导图架构PPT的老司机,对我来说,PPT就如同家常便饭,针对您说的这个问题,我分享一些个人经验,只为求点赞、转发 ^_^
不废话,直接上操作步骤,文末有模板库赠送~
1、打开PPT、【设计】、【浏览主题】,打开本地PPT模板文件,套用模板即可。
2、母版编辑
方法:【视图】、【幻灯片母版】,修改字体、颜色、背景、LOGO、目录等
3、模板库分享
当然,要套用模板,就需要有好模板,我收集了几千套,然后整理出比较实用的790套,如有需要的请:(1)转发 (2)私信发072
今天就分享这些,更多Office技巧,请关注【思维导图PPT】,每天分享一篇思维导图、PPT、职场技巧干货,你的每一次来访都有所收获!
本文来自投稿,不代表本站立场,如若转载,请注明出处。