ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 5661|回复: 19

[分享] 最新工资条生成工具

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-7-26 17:31 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
工資條生成工具(圖示)
gz.jpg
附件:
工資條生成工具.zip (57.99 KB, 下载次数: 768)


该贴已经同步到 软件爱好者的微博

TA的精华主题

TA的得分主题

发表于 2012-7-26 17:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-7-26 17:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢分享!下载备用

TA的精华主题

TA的得分主题

发表于 2012-7-26 18:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-7-26 21:13 | 显示全部楼层
我觉得有一段代码好像出错了。
其中一段代码应该是这样吧?
Set Ash = ActiveSheet
  IName = "(IName)"
  Application.DisplayAlerts = False
If SheetExists("IName") Then ThisWorkbook.Sheets("IName").Delete
  Application.DisplayAlerts = True

TA的精华主题

TA的得分主题

发表于 2012-7-26 22:16 | 显示全部楼层
YEJINHAI 发表于 2012-7-26 21:13
我觉得有一段代码好像出错了。
其中一段代码应该是这样吧?
Set Ash = ActiveSheet

对不起。我轻轻改了一下代码。看看这样是否更适合?

Private Sub UserForm_Initialize()
  ScrollBar1.Max = Columns.Count
  ScrollBar2.Max = Columns.Count
  ScrollBar3.Max = Columns.Count
  ScrollBar4.Max = Columns.Count
  ScrollBar5.Max = 12
  ScrollBar6.Max = 20
  '--------------------------------
  TextBox1.Text = 2 '开始行号
  TextBox2.Text = 2 '标题行数
  TextBox3.Text = 1 '每组人数
  TextBox4.Text = 0 '间隔行数
  TextBox5.Text = Month(Now) - 1 '打印月份
  TextBox6.Text = 12
  If TextBox1.Text > 0 Then ScrollBar1.Value = TextBox1.Text
  If TextBox2.Text > 0 Then ScrollBar2.Value = TextBox2.Text
  If TextBox3.Text > 0 Then ScrollBar3.Value = TextBox3.Text
  If TextBox4.Text > 0 Then ScrollBar4.Value = TextBox4.Text
  If TextBox5.Text > 0 Then ScrollBar5.Value = TextBox5.Text
  If TextBox6.Text > 0 Then ScrollBar6.Value = TextBox6.Text
End Sub
Private Sub ScrollBar1_Change() '开始行号
  TextBox1.Text = ScrollBar1.Value
End Sub
Private Sub ScrollBar2_Change() '标题行数
  TextBox2.Text = ScrollBar2.Value
End Sub
Private Sub ScrollBar3_Change() '每组人数
  TextBox3.Text = ScrollBar3.Value
End Sub
Private Sub ScrollBar4_Change() '间隔行数
  TextBox4.Text = ScrollBar4.Value
End Sub
Private Sub ScrollBar5_Change() '存放行号
  TextBox5.Text = ScrollBar5.Value
End Sub
Private Sub ScrollBar6_Change() '存放行号
  TextBox6.Text = ScrollBar6.Value
End Sub
Private Sub CommandButton1_Click()
Dim Ash As Worksheet, sh As Worksheet, hq, hz, lq, lz, ih, il
Dim ks, bt, rs, jg, yf, yrs
Dim I, j, k
Dim BtCopy As Range, IRng As Range, IName, N
    On Error Resume Next
    On Error GoTo 0
With Me
    ks = Val(.TextBox1.Text)
    bt = Val(.TextBox2.Text)
    rs = Val(.TextBox3.Text)
    jg = Val(.TextBox4.Text)
    yf = Val(.TextBox5.Text)
    yrs = Val(.TextBox6.Text)
    Unload Me 'Me.Hide
End With
    Application.EnableEvents = False
    'Application.ScreenUpdating = False
    Application.Calculation = xlManual 'Application.Calculation = xlAutomatic
Set Ash = ActiveSheet
  IName = "(IName)"
  Application.DisplayAlerts = False
  
For Each ws In Worksheets
        If ws.Name Like "*IN*" Then
            ws.Delete
        End If
    Next
    Set ws = Nothing
   
Application.DisplayAlerts = True
Ash.Copy Before:=Ash
Set sh = ActiveSheet
sh.Name = IName
With sh
    .Activate
    hq = ks + bt
    lq = 1
    lz = Cells(hq, Columns.Count).End(xlToLeft).Column
    hz = Cells(Rows.Count, 2).End(xlUp).Row
    Set BtCopy = Rows(ks).Resize(bt)
    Set IRng = Range(Cells(hq, lq), Cells(hz, lz))
    IRng.MergeCells = False '取消合併
    IRng.Copy
    IRng.PasteSpecial Paste:=xlPasteValues
    IRng.ShrinkToFit = True '自動縮小字體
    IRng.Interior.ColorIndex = xlNone '清空填充色
    If CheckBox1 Then Range(Cells(hq, lq), Cells(hz, lq)).Value = yf
    Set IRng = Nothing
    Application.CutCopyMode = False
    .DrawingObjects.Delete '清理對象
    .ResetAllPageBreaks '重置分頁符
    .DisplayAutomaticPageBreaks = False '取消自動分頁符
    .PageSetup.BlackAndWhite = False '設置一頁寬
    With .PageSetup
        .PaperSize = xlPaperA4
        .FitToPagesWide = 1 '頁寬
        '.FitToPagesTall =1 '頁高
    End With
End With
  N = IIf(rs <= 0, 1, rs)
For I = hq To hz Step IIf(rs <= 0, 1, rs)
  k = k + 1
  If I = hz Then GoTo q
  BtCopy.Copy
  Rows(I + N).Insert Shift:=xlDown
  Application.CutCopyMode = False
  Rows(I + N).Activate
  If jg > 0 Then
  With Rows(I + N).Resize(jg)
    Rows(Rows.Count - 1).Copy
    .Insert Shift:=xlDown '插入間隔
    .Offset(-jg, 0).RowHeight = 2.5 '默認行高
     Application.CutCopyMode = False
  End With
  N = N + jg
  End If
  If k Mod yrs = 0 Then
  '本示例在单元格上方添加水平分页符,在其左方添加垂直分页符。
  With sh
    ActiveWindow.View = xlPageBreakPreview '分頁視圖
    .HPageBreaks.Add Before:=.Cells(I + N, lq)
    .VPageBreaks.Add Before:=.Cells(I + N, lz)
    ActiveWindow.View = xlNormalView '普通視圖
  End With
  End If
  N = N + BtCopy.Rows.Count
Next I
q:
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic 'Application.Calculation = xlManual
End Sub
'------------ 判断工作表是否存在如果存在的附加函数:
Function SheetExists(SheetName As String) As Boolean
  SheetExists = False
  On Error GoTo NoSuchSheet
  If Len(Sheets(SheetName).Name) > 0 Then
    SheetExists = True
    Exit Function
  End If
NoSuchSheet:
End Function

TA的精华主题

TA的得分主题

发表于 2012-7-26 22:20 | 显示全部楼层
YEJINHAI 发表于 2012-7-26 22:16
对不起。我轻轻改了一下代码。看看这样是否更适合?

Private Sub UserForm_Initialize()

真的对不起。
QQ截图20120726221916.jpg
QQ截图20120726221902.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-7-27 08:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
YEJINHAI 发表于 2012-7-26 22:20
真的对不起。

只要在能生成前能将原工资条临时表删除,达到工资条的效果就可以了! 分页打印那还是有些不到位,在行的修正一下,多谢!

TA的精华主题

TA的得分主题

发表于 2012-7-27 14:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-7-28 12:05 | 显示全部楼层
本帖最后由 lzqlaj 于 2012-7-28 12:06 编辑

窗体界面有些眼熟。
http://club.excelhome.net/thread-487664-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-1 20:36 , Processed in 0.037136 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表