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 ...
随机推荐
- 下载及安装selenium IDE
安装方法1:可以从官方网站下载:http://seleniumhq.org/download/,但是由于selenium服务器在美国,中美的网络经常不稳定,经常会连接失败,导致下载不了 可以找一下se ...
- linux常用命令(替换)
1. vi 模式下的替换命令: s 表示替换(substitute),g表示全局搜索(global search) :s/vivian/sky/ 替换当前行第一个 vivian 为 sky :s/vi ...
- linux服务器管理员的12个有用的命令
ifconfig: 在修改内核中已有的网络接口时,你会用到ifconfig命令.这个命令通常用于系统调校和调试,但同时也可以用于在启动过程中设置接口. netstat: 对于Linux用户来说这是一个 ...
- web前端----Bootstrap框架
Bootstrap介绍 Bootstrap是Twitter开源的基于HTML.CSS.JavaScript的前端框架. 它是为实现快速开发Web应用程序而设计的一套前端工具包. 它支持响应式布局,并且 ...
- bzoj1698 / P1606 [USACO07FEB]白银莲花池Lilypad Pond
P1606 [USACO07FEB]白银莲花池Lilypad Pond 转化为最短路求解 放置莲花的方法如果直接算会有重复情况. 于是我们可以先预处理和已有莲花之间直接互相可达的点,将它们连边(对,忽 ...
- Linux 进程学习笔记
1.什么是程序?什么是进程?它们有什么区别? 定义: 程序:程序(Program)是一个静态的命令集合,程序一般放在磁盘中,然后通过用户的执行来触发.触发后程序会加载到内存中成为一个个体,就是进程. ...
- 在EditText里输入小写字母时,将小写字母转化为大写显示
1.新建类继承ReplacementTransformationMethod 方法 public class test extends ReplacementTransformationMethod ...
- JavaScript常用操作,常用类
算术运算符 重点关注 算数,赋值,逻辑运算符,三目运算符 <!DOCTYPE html> <html> <head> <meta charset=" ...
- 浅谈java中死锁问题
知识点:死锁的产生.死锁的实例 一:死锁的产生 我们在解决多线程共享资源的线程同步问题时,会使用synchronized关键字修饰方法或者通过Lock加锁方式修饰方法.代码块,防止多个线程访问统一资源 ...
- [codeWars] - 8kyu的简单复习
https://www.codewars.com/kata/5aa736a455f906981800360d public class Kata { public static boolean fea ...