【VBA研究】生成工资条

作者:iamlaosong

 

1、可以将工资表拆分成可以撕开单独使用的工资条,即每个人工资数额上面加上项目名称,每个人后面加一个空行,第一次写VBA程序,主要靠录制宏,代码很粗糙,数据和代码如下:

 

 

Sub 生成工资条()
    '定义工作表名称
    gzb = "Sheet1"   '工资表
    gzt = "Sheet2"   '工资条
    
    'num = InputBox("请输入总人数:")
    
    num = 12
    
    'col = InputBox("请输入工资表的栏数:")
    
    col = 28
    
    '删除原来的工资条
    Sheets(gzt).Select
    Range(Cells(1, 1), Cells(num * 3, col)).Select
    Selection.Delete
    
    num1 = 0
    
    Do While num1 < num
    
      '插入标题行
    
        Sheets(gzb).Select
        Range(Cells(1, 1), Cells(1, col)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Sheet2").Select
        Range(Cells(num1 * 3 + 1, 1), Cells(num1 * 3 + 1, col)).Select
        ActiveSheet.Paste
    
      '插入数据行
    
        Sheets("Sheet1").Select
        Range(Cells(num1 + 2, 1), Cells(num1 + 2, col)).Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Sheet2").Select
        Range(Cells(num1 * 3 + 2, 1), Cells(num1 * 3 + 2, col)).Select
        ActiveSheet.Paste
        
        num1 = num1 + 1
    
    Loop
    
    Range(Cells(1, 1), Cells(2, col)).Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    
    '定义表格边框线、内线样式
    
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
    .LineStyle = xlDouble
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    
    With Selection.Borders(xlEdgeTop)
    .LineStyle = xlDouble
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    
    With Selection.Borders(xlEdgeBottom)
    .LineStyle = xlDouble
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    
    With Selection.Borders(xlEdgeRight)
    .LineStyle = xlDouble
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    End With
    
    With Selection.Borders(xlInsideVertical)
    .LineStyle = xlDash
    .Weight = xlThin
    .ColorIndex = xlAutomatic
    End With
    
    With Selection.Borders(xlInsideHorizontal)
    .LineStyle = xlDash
    .Weight = xlThin
    .ColorIndex = xlAutomatic
    End With
    
    Selection.Copy
    num3 = 1
    Do While num3 < num
    
        '循环复制表格线样式
        
        Range(Cells(num3 * 3 + 1, 1), Cells(num3 * 3 + 2, col)).Select
        Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
        num3 = num3 + 1
    
    Loop
End Sub

2、上面只是练习VBA编程,其实不写程序也可以轻松完成工资条,方法如下:

(1)把标题行复制到另一个表中,然后在序号下输入数字1,然在在B2中输入下面公式并向右复制
=VLOOKUP($A2,销售部工资表!$A:$I,COLUMN(B1),0)
公式说明:Column(b1)在公式向右复制时生成2,3,4,5,6...数字,作为VLOOKUP的第3个参数。

(2)选取前三行向下复制。有多少人就复制多少次,拖拽复制也可以。复制后,工资条已自动生成。(如果中间隔2个空行则选前4行)


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VBA(Visual Basic for Applications)是一种用于自动化任务和编写宏的编程语言,它可以与Microsoft Office应用程序(如Excel、Word、PowerPoint等)进行集成。通过使用VBA,您可以编写一键微信群发工资条的功能。 以下是一个简单的示例,演示如何使用VBAExcel中实现一键微信群发工资条的功能: 1.开Excel,并创建一个工资条数据表格,包含员工姓名、工资等信息。 2. 在Excel中按下Alt+F11,打开VBA编辑器。 3. 在VBA编辑器中,插入一个新的模块。 4. 在模块中编写以下代码: ```vba Sub SendSalary() Dim objShell As Object Dim strScript As String ' 创建一个Shell对象 Set objShell = CreateObject("WScript.Shell") ' 构造发送微信消息的脚本 strScript = "Set WshShell = CreateObject(""WScript.Shell"")" & vbCrLf strScript = strScript & "WshShell.Run ""wechat.exe sendmsg -t """"群名"""" -c """"工资条内容""""""" ' 运行发送微信消息的脚本 objShell.Run "cmd /c " & strScript, 0, True ' 释放对象 Set objShell = Nothing End Sub ``` 5. 在代码中,您需要将"群名"替换为您要发送工资条的微信群名称,"工资条内容"替换为您要发送的具体工资条内容。 6. 保存并关闭VBA编辑器。 7. 在Excel中,按下Alt+F8,打开宏对话框。 8. 选择"SendSalary"宏,并点击运行。 这样,VBA代码将自动执行,通过微信发送工资条内容到指定的微信群。 请注意,上述示例仅提供了一个基本的思路和代码框架,您可能需要根据实际需求进行修改和完善。另外,微信的命令行工具(wechat.exe)需要提前安装并配置好,以便能够通过命令行发送消息。 希望以上信息对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值