1. 首页
  2. 资讯

签到表模板

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、职场技巧干货,你的每一次来访都有所收获!

本文来自投稿,不代表本站立场,如若转载,请注明出处。