20170706xlVBA根据工资汇总表生成个人工资条
Sub NextSeven20170706001()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.StatusBar = ">>>>>>>>程序正在运行>>>>>>>>" 'On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant
StartTime = VBA.Timer Dim wb As Workbook
Dim OneSht As Worksheet
Dim Rng As Range
Const FirstRow As Long = 4
Dim FormatRng As Range
Dim Arr As Variant
Dim i As Long, j As Long
Dim PasteRow As Long
Dim DesRow As Long
Dim OpenWb As Workbook
Dim OpenSht As Worksheet Dim RngAdr As String
Dim FilePath As String
Dim High(1 To 8) As Double With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.InitialFileName = ThisWorkbook.Path
.Title = "请选择工资表!"
.Filters.Clear
.Filters.Add "Excel工作簿", "*.xls*"
If .Show = -1 Then
FilePath = .SelectedItems(1)
Debug.Print FilePath
Else
MsgBox "您没有选中任何文件夹,本次汇总中断!"
Exit Sub
End If
End With Set wb = Application.ThisWorkbook
Set OpenWb = Application.Workbooks.Open(FilePath)
For Each OneSht In wb.Worksheets
RngAdr = RangeAddress(OneSht.Name)
Set OpenSht = OpenWb.Worksheets(OneSht.Name)
With OpenSht
Set Rng = .UsedRange
Arr = Rng.Value
End With
With OneSht
.UsedRange.Offset(8).Clear
For i = 1 To 8
High(i) = .Cells(i, 1).RowHeight
Next i Set FormatRng = .Range(RngAdr)
For i = LBound(Arr) + 1 To UBound(Arr) - 1 If i = 2 Then
For j = LBound(Arr, 2) To UBound(Arr, 2)
.Cells(FirstRow, j + 1).Value = Arr(i, j)
Next j
Else
'复制一次格式
PasteRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row + 4
FormatRng.Copy .Cells(PasteRow, 1)
DesRow = PasteRow + 3 For j = LBound(Arr, 2) To UBound(Arr, 2)
.Cells(DesRow, j + 1).Value = Arr(i, j)
Next j End If
Next i EndRow = .Cells.Find("*", .Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).Row For i = 1 To EndRow
x = (i - 1) Mod 8 + 1
.Rows(i).RowHeight = High(x)
Next i
End With Next OneSht OpenWb.Close False Set wb = Nothing
Set OneSht = Nothing
Set FormatRng = Nothing
Set OpenWb = Nothing
Set OpenSht = Nothing ErrorExit:
Set wb = Nothing
Set OneSht = Nothing
Set FormatRng = Nothing
Set OpenWb = Nothing
Set OpenSht = Nothing Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = False
Exit Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Description & "!", vbCritical, "NextSeven Excel Studio QQ84857038"
'Debug.Print Err.Description
Err.Clear
Resume ErrorExit
End If
End Sub Function RangeAddress(ByVal SheetName As String) As String
Select Case SheetName
Case "岗位工资制"
RangeAddress = "A1:AG8"
Case "叉车工资制"
RangeAddress = "A1:AJ8"
Case "产能工资制"
RangeAddress = "A1:AH8"
End Select
End Function
20170706xlVBA根据工资汇总表生成个人工资条的更多相关文章
- k3 Bos开发百问百答
K/3 BOS开发百问百答 (版本:V1.1) K3产品市场部 目录 一.基础资料篇__ 1 [摘要]bos基础资料的显示问题_ 1 [摘要]单 ...
- 用友u8数据库表结构
用友数据库表名参照表1 Accessaries 成套件表2 AccInformation 帐套参数表3 AdjustPVouch4 AdjustPVouchs5 Ap_AlarmSet 单位报警分类设 ...
- 《Oracle查询优化改写技巧与案例》学习笔记-------使用数字篇
一个系列的读书笔记,读的书是有教无类和落落两位老师编写的<Oracle查询优化改写技巧与案例>. 用这个系列的读书笔记来督促自己学习Oracle,同时,对于其中一些内容,希望大家看到以后, ...
- SOLID架构设计原则
最近通读了<架构整洁之道>,受益匪浅,遂摘选出设计原则部分,与大家分享,希望大家能从中获益. 以下为书中第3部分 设计原则的原文. 设计原则概述 通常来说,要想构建-个好的软件系统,应该从 ...
- Elasticserach学习笔记(一)
1.什么是Elasticserach? 一个由Java语言开发的全文搜索引擎,全文检索就是根据用户输入查询字符的片段,能查询出包含片段的数据,简单来说就是一个分布式的搜索与分析引擎,它可以完成分布式部 ...
- 130_传析阅管理系统accdb64位版本
博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 几年前笔者针对家居门店的进销存.人员管理.工资管理.任务系统.门店经营盈亏管理.销售分析.考勤请假等息息相关的业务基于Ac ...
- Oracle 11g数据库详解(2)
FAILED_LOGIN_ATTEMPTS 用于指定连续登陆失败的最大次数 达到最大次数后,用户会被锁定,登陆时提示ORA-28000 UNLIMITED为不限制 精确无误差 是 实时 PASSWOR ...
- excel技巧--批量生成工资条
要想生成如上图的工资条,快速的方法如下: 1.在工资表右侧建立一升序数字列,完成后再复制该列,重复粘贴一次在该列底部.2.对该表排序:“开始”-->“排序和筛选”-->自定义排序.在对话框 ...
- 工资表的生成、显示、修改工资,应用transactionscope 分布式事务
一: 二:SalarySheetDAL.cs using System; using System.Collections.Generic; using System.Linq; using Syst ...
随机推荐
- Python: dict setdault函数与collections.defaultdict()的区别
setdault用法 >>>dd={'hy':1,'hx':2} >>>cc=dd.setdefault('hz',1) >>>cc 返 ...
- Filter过滤器与Session会话跟踪技术
Filter过滤器 适用场景 1.为web应用程序的新功能建立模型(可被添加到web应用程序中或者从web应用程序中删除而不需要重写基层应用程序代码)2.用户授权Filter:负责检查用户请求,根据请 ...
- Nodejs学习笔记(四)与MySQL交互(felixge/node-mysql)
原文链接:http://www.cnblogs.com/zhongweiv/p/nodejs_mysql.html 介绍使用felixge/node-mysql进行SQL的增删改查以及断线重连等操作.
- 20145322 Exp5 Adobe阅读器漏洞攻击
20145322 Exp5 Adobe阅读器漏洞攻击 实验过程 IP:kali:192.168.1.102 windowsxp :192.168.1.119 msfconsole进入控制台 使用命令为 ...
- 20145337 《网络对抗技术》Web基础
20145337 <网络对抗技术>Web基础 一.实验后回答问题 什么是表单? 表单是HTML的一个重要部分,主要用于将用户输入的信息提交到服务器.如果是普通的HTML页面,则当浏览器提出 ...
- C语言结构体,点运算和箭头运算
C语言有一种数据类型叫结构体,其定义格式为: struct 结构体名 { 结构体成员变量定义; }; 如: struct student { char name[20]; int age ; doub ...
- C# 将 Stream 写入文件
public void StreamToFile(Stream stream,string fileName) { // 把 Stream 转换成 byte[] byte[] bytes = new ...
- Go第二篇之基本语法总结
Go语言标识符 标识符以字母或下划线开头,大小写敏感 _是特殊标识符,用来忽略结果 Go语言变量的声明 变量(Variable)的功能是存储用户的数据.不同的逻辑有不同的对象类型,也就有不同的变量类型 ...
- win7下把电脑设置成wlan热
有很多公司没有无线网,只有自己的电脑可以上网,现在设置热点,可以手机上网 步骤: 1.看自己的网卡是否支持承载网络,如果不支持,本法就不适用 在CMD里用 netsh wlan show dri ...
- mysql删除sql表添加别名及删除sql的注意事项
本文为博主原创,未经允许不得转载: 根据平常的习惯,个人会将操作的表后面添加一个别名,无论是使用还是不使用的时候,均是为了 修改还是扩展sql的时候更加安全,方便,快捷. 今天在写删除的sql时,对表 ...