基本构架:
- 工资条页面:工资录入、初始化工资表、工资表打印
- 人员信息设置:添加人员
- 系统设置
- 工资条:生成工资条、打印工资条
- 帮助
其中,还有些没有做完成的部分,没有罗列出来。
初次使用,要对人员信息进行录入。可将人员信息保存为模板,以后就只做少许更改即可完成工资制作。
基本构架:
其中,还有些没有做完成的部分,没有罗列出来。
初次使用,要对人员信息进行录入。可将人员信息保存为模板,以后就只做少许更改即可完成工资制作。
以前,财务做工资表,要一个上午,甚至几天才能完成工资表制作。
我就不明白了,输入几个数据就这么难吗?
问过之后才发现,的确费时费力,原来每次都要面对宏大的数据表格逐个添加。
怎么理解好呢!我也不好解释什么。
这种方法,我认为就一个字 -- 笨。
Excel这么好用的工具都被糟蹋了。
本来5分钟可以完成的工作,为什么要半天来做,有必要吗?
或许对一些人来讲,真的有必要。
不是必要而没有好办法。
于是,经一番周折,做好工资管理系统。
然而,没什么用。
一些人,就是习惯笨笨的办法,要想让她变得轻松,还真不是一个简单的事情。
不过从另一个角度来考虑,或许是此应用非人之所用吧!
这也无所谓。
此工资管理操作需要重点注意一点:
初次使用,首先对人员信息进行设置,这一步很关键,因为此后的所有计算都以人员编号为依据。
输入方面也做窗体化设计,简单操作几下把必要的姓名和入职年份输入就可以了。
当然了,也包括一些系数、保险公积金等相对固定的数据,初次要进行输入。
保存时可以选择保存为模板,下次做工资就直接引用模板数据,然后修改变化项就可以了。
简化了许多重复性数据录入工作。
每个月的变化量是必须要手动录入的,不变量可以作为模板数据进行保存。
Private Sub CommandButton1_Click()
'''''''''' 添加信息 ''''''''''''''''
On Error Resume Next
Application.ScreenUpdating = False
Dim w As Worksheet, s As Worksheet
Set w = ThisWorkbook.Worksheets("工资表")
w.Activate
Set s = ThisWorkbook.Worksheets("个人设置")
Dim iRow As Integer, iCol As Integer
Dim R As Range, Rw As Range, Rv As Range
iRow = w.Range("A65535").End(xlUp).Row
iCol = w.Range("A1").End(xlToRight).Column
Dim inR As Range
Dim cArr()
ReDim cArr(1 To iCol)
Dim cObj As Object
Dim moban As Boolean, Tdate As Date
For Each cObj In Me.Controls
If TypeName(cObj) = "ComboBox" Then
cArr(VBA.CInt(VBA.Replace(cObj.Name, "C", "", 1))) = cObj.Value
End If
If TypeName(cObj) = "CheckBox" And cObj.Name = "che" Then
moban = cObj.Value
End If
If TypeName(cObj) = "TextBox" And cObj.Name = "Dat" Then
If Not VBA.IsDate(cObj.Value) Then MsgBox "入职日期格式不正确", vbInformation, "提示": Exit Sub
If cObj.Value = "0:00:00" Then MsgBox "没有设置入职日期!", vbInformation, "提示": Exit Sub
If VBA.IsDate(cObj.Value) Then
Tdate = VBA.CDate(cObj.Value)
Else
Tdate = "1900/01/01"
End If
End If
Next cObj
cArr(1) = "=row()-1"
'''''''''''''''''' 添加数据
Set Rw = w.Range("C2:C" & iRow)
Dim Ron As Boolean
Ron = False
For Each R In Rw
If R.Value = cArr(3) Then ''''''''''' 信息已经找到修改
Set Rv = w.Range(Cells(R.Row, 1), Cells(R.Row, iCol))
cArr(16) = "=sum(F" & R.Row & ":O" & R.Row & ")" ''''应发工资赋值
cArr(22) = "=P" & R.Row & "-sum(Q" & R.Row & ":u" & R.Row & ")" ''''实发工资赋值
Rv = cArr
Ron = True
End If
Next R
If Not Ron Then '''''''''''没有找到新增信息
Dim Ri As Integer
Ri = 2
w.Rows(Ri).Insert
Set inR = w.Range(Cells(2, 1), Cells(2, iCol))
cArr(16) = "=sum(F" & Ri & ":O" & Ri & ")" ''''应发工资赋值
cArr(22) = "=P" & Ri & "-sum(Q" & Ri & ":u" & Ri & ")" ''''实发工资赋值
inR = cArr
With inR
.Borders.LineStyle = 1
.Interior.Color = RGB(235, 235, 235)
End With
End If
ThisWorkbook.Save
End Sub
代码实在太多,这里随便截取了一段,每个表格里都有不同的代码,如果对vba不太熟悉,假如有一点小问题,可能就是个大麻烦。
建议,工作当中还了解一点vba知识比较好。
文/江觅
如需要索取源码下载,请关注江觅,私信留言,获取下载链接。
ComboBox这个控件使用频率太高了,我从VC6编程开始就用它,一直用到C#到现在的Net6,要说我这么一个编程老手还能在它身上栽跟头,我都不敢相信。但是今天竟然被它无情的戏耍了。记录下这个问题,看...
【分享成果,随喜正能量】对别人期待太高,本质上是对自身无能的逃避和推托,与其期待别人,不如依靠自己。你不害怕孤独,就不再寄期望于他人陪伴;你有底气解决问题,就不在寄期望于他人向你伸出援手。一个人期待值...
上一篇文章Qt之QComboBox定制讲到了qt实现自定义的下拉框,该篇文章主要实现了列表式的下拉框,这一节我还将继续讲解QComboBox的定制,而这一节我将会讲述更高级的用法,不仅仅是下拉列表框,...
第八节的内容早已写好发布,结果一直在审核中,不知道触动了哪条神经。评论中看到有一些网友都在问为什么不用WPF来开发,在这里我统一说明下:1)WPF界面设计相对复杂。由于它是矢量的,需要额外有很多容器做...
1.QSharedMemory介绍...
今天是大年初四,继续探讨pyqt6,给出使用的建议。PyQt6绝不仅仅局限于UI设计...
Qt本身并不是一种编程语言,它实质上是一个跨平台的C++开发类库。它是用标准C++编写的,为开发GUI应用程序和非GUI应用程序提供了各种类。Qt对标准C++进行了扩展,引入一些新的概念和功能,例如信...
前言不知道大家有没有发现今天的文章有什么不一样,哈哈,我自己胡拼乱凑弄了一个logo,好不好看就先不说了,最起码萌萌哒...当然这不是今天的重点,在做logo的时候,我原本想让文字动起来的,奈何技术有...
1.简介QtConcurrent命名空间提供了高级api,使得无需使用诸如互斥、读写锁、等待条件或信号量等低级线程原语就可以编写多线程程序。使用QtConcurrent编写的程序会根据可用的...
一、使用场景...
一、为什么要使用匿名函数lamdba首先,lambda表达式可以使代码变得简单,C++中,一个lambda表达式表示一个可调用的代码单元。如代码:...
今天,正运动小助手给大家分享一下EtherCAT运动控制卡开发教程之Qt,主要介绍一下如何通过Qt编程实现小线段轨迹连续加工,暂停与继续。...
今天给大家分享:...
引言本打算以上一篇文章作为面向对象模块的收尾,但是,犹豫了许久,还是决定再补充一篇,也就是今天这篇文章,打算基于Python的PyQt6/PySide6框架开发一个GUI程序,模拟实现一个在电脑桌面活...
1.基础类型因为Qt是一个C++框架,因此C++中所有的语法和数据类型在Qt中都是被支持的,但是Qt中也定义了一些属于自己的数据类型,下边给大家介绍一下这些基础的数类型。...