亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

嘗試了一下寫Excel宏的VBA腳本

2024-07-21 23:03:55
字體:
來源:轉載
供稿:網友

一個同學讓我幫下他的忙,寫一個能生成工資單的Excel宏,從工資明細表中抽取相關數據,生成簡易明了的工資單,嘗試了一下,代碼如下,僅作為記錄:
 

  1. Sub 工資條計算() 
  2.     'Sheet名稱 
  3.     Dim DataSource As String 
  4.     Dim Target As String 
  5.     Dim Tpl As String 
  6.     Dim TableHeaderPos As Integer 
  7.     Dim EmptyCol As Integer 
  8.     Dim DataStartRow As Integer 
  9.     Dim MaxColCounts As Integer 
  10.     DataSource = "匯總明細" 
  11.     Target = "宏工資條" 
  12.     Tpl = "工資表1" 
  13.     TableHeaderPos = 4 
  14.     DataStartRow = TableHeaderPos + 1 
  15.     MaxColCounts = 32 '數據源中最大的橫向寬度 
  16.     MaxColTplCounts = 16 '生成工資表中的最大橫向寬度 
  17.       
  18.     '收集工資單目標表頭 
  19.     Dim TargetTableHeader(1 To 100) As String 
  20.     Dim Temp As Integer 
  21.     Temp = 1 
  22.     Do 
  23.         If (Worksheets(Tpl).Cells(1, Temp) = "" And Temp = MaxColTplCounts) Then Exit Do 
  24.         TargetTableHeader(Temp) = Worksheets(Tpl).Cells(1, Temp) 
  25.         Temp = Temp + 1 
  26.     Loop 
  27.       
  28.     Temp = 1 
  29.     '得到總共的數據條數 
  30.     Dim AllDataCounts As Integer 
  31.     Do 
  32.          If (Worksheets(DataSource).Range("A" & Temp) = ""Then Exit Do 
  33.          Temp = Temp + 1 
  34.     Loop 
  35.     AllDataCounts = Temp - TableHeaderPos - 1 
  36.       
  37.     '得到當前月份,工資單是上一個月 
  38.     Dim NowMonth As String 
  39.     Dim TableMonth As Integer 
  40.     NowMonth = Format(Now, "m"
  41.     TableMonth = CInt(NowMonth) - 1 
  42.       
  43.     '開始填充數據 
  44.     '外層循環,行數,Y 
  45.     Dim TargetDataStartRow As Integer 
  46.     Dim Cookie As Integer 
  47.     Cookie = 1 
  48.     TargetDataStartRow = 5 '默認從第5行開始 
  49.     For Y = TargetDataStartRow To (TargetDataStartRow + AllDataCounts - 1) 
  50.         '內層循環,列數,X 
  51.         For X = 1 To (MaxColTplCounts - 1) 
  52.             '寫入表頭 
  53.             Worksheets(Target).Cells(Y + Cookie - 1, X) = TargetTableHeader(X) 
  54.             '調整表頭樣式 
  55.             Worksheets(Target).Cells(Y + Cookie - 1, X).Select 
  56.             Selection.Font.Size = 10 
  57.             '寫入數據 
  58.             '月份 
  59.             If (X = 1) Then Worksheets(Target).Cells(Y + Cookie, X) = TableMonth 
  60.             '姓名 
  61.             If (X = 2 Or X = 3) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X) 
  62.             '固定工資 9 + 10 
  63.             If (X = 4) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 9).Text) + Val(Worksheets(DataSource).Cells(Y, 10).Text) 
  64.             '績效薪資標準,三個 
  65.             If (X = 5 Or X = 6 Or X = 7) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X + 6) 
  66.             '缺勤扣款 
  67.             If (X = 8) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, 15) 
  68.             '其他工資 16 + 17 
  69.             If (X = 9) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 16).Text) + Val(Worksheets(DataSource).Cells(Y, 17).Text) 
  70.             '福利收入 18 -> 22 
  71.             If (X = 10) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 18).Text) + Val(Worksheets(DataSource).Cells(Y, 19).Text) + Val(Worksheets(DataSource).Cells(Y, 20).Text) + Val(Worksheets(DataSource).Cells(Y, 21).Text) + Val(Worksheets(DataSource).Cells(Y, 22).Text) 
  72.             '其它及獎懲 23 - 24 
  73.             If (X = 11) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 23).Text) - Val(Worksheets(DataSource).Cells(Y, 24).Text) 
  74.             '應發工資 和 其他扣款 
  75.             If (X = 12 Or X = 13) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X + 13) 
  76.             '保險扣款 27 + 28 + 29 
  77.             If (X = 14) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 27).Text) + Val(Worksheets(DataSource).Cells(Y, 28).Text) + Val(Worksheets(DataSource).Cells(Y, 29).Text) 
  78.             '實發工資 
  79.             If (X = 15) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, MaxColCounts - 1) 
  80.             '調整樣式 
  81.             Worksheets(Target).Cells(Y + Cookie, X).Select 
  82.             Selection.Font.Bold = True 
  83.         Next 
  84.         Cookie = Cookie + 1 
  85.     Next 
  86.     '數據生成完畢,開始樣式調整 
  87.     '總體調整 
  88.     Cells.Select 
  89.     With Selection 
  90.         .HorizontalAlignment = xlCenter 
  91.         .VerticalAlignment = xlCenter 
  92.         .WrapText = True 
  93.         .Orientation = 0 
  94.         .AddIndent = False 
  95.         .IndentLevel = 0 
  96.         .ShrinkToFit = False 
  97.         .ReadingOrder = xlContext 
  98.         .MergeCells = False 
  99.     End With 
  100.     Worksheets(Target).Range("A1").Select 
  101. End Sub 

今天(2012/07/29)又做了下修改,按照同學的一些改動需求:
 

  1. Sub 工資條計算() 
  2.     'Sheet名稱 
  3.     Dim DataSource As String 
  4.     Dim Target As String 
  5.     'Dim Tpl As String 
  6.     Dim TableHeaderPos As Integer 
  7.     Dim EmptyCol As Integer 
  8.     Dim DataStartRow As Integer 
  9.     Dim MaxColCounts As Integer 
  10.     DataSource = "匯總明細" 
  11.     Target = "宏工資條" 
  12.     'Tpl = "工資表1" 
  13.     TableHeaderPos = 4 
  14.     DataStartRow = TableHeaderPos + 1 
  15.     MaxColCounts = 32 '數據源中最大的橫向寬度 
  16.     MaxColTplCounts = 16 '生成工資表中的最大橫向寬度 
  17.      
  18.     '收集工資單目標表頭,寫成死的表頭 
  19.     Dim TargetTableHeader(1 To 100) As String 
  20.     '以下為注釋 
  21.     'Dim Temp As Integer 
  22.     'Temp = 1 
  23.     'Do 
  24.     '    If (Worksheets(Tpl).Cells(1, Temp) = "" And Temp = MaxColTplCounts) Then Exit Do 
  25.     '    TargetTableHeader(Temp) = Worksheets(Tpl).Cells(1, Temp) 
  26.     '    Temp = Temp + 1 
  27.     'Loop 
  28.     TargetTableHeader(1) = "月份" 
  29.     TargetTableHeader(2) = "姓名" 
  30.     TargetTableHeader(3) = "中心/部門" 
  31.     TargetTableHeader(4) = "固定工資" 
  32.     TargetTableHeader(5) = "績效薪資標準" 
  33.     TargetTableHeader(6) = "本月季績效系數" 
  34.     TargetTableHeader(7) = "月季薪制績效工資實發" 
  35.     TargetTableHeader(8) = "缺勤扣款" 
  36.     TargetTableHeader(9) = "其他工資" 
  37.     TargetTableHeader(10) = "福利收入" 
  38.     TargetTableHeader(11) = "其他及獎懲" 
  39.     TargetTableHeader(12) = "應發工資" 
  40.     TargetTableHeader(13) = "其他扣款" 
  41.     TargetTableHeader(14) = "保險扣款" 
  42.     TargetTableHeader(15) = "實發工資" 
  43.      
  44.     Temp = 1 
  45.     '得到總共的數據條數 
  46.     Dim AllDataCounts As Integer 
  47.     Do 
  48.          If (Worksheets(DataSource).Range("A" & Temp) = ""Then Exit Do 
  49.          Temp = Temp + 1 
  50.     Loop 
  51.     AllDataCounts = Temp - TableHeaderPos - 1 
  52.      
  53.     '得到當前月份,工資單是上一個月 
  54.     Dim NowMonth As String 
  55.     Dim TableMonth As Integer 
  56.     NowMonth = Format(Now, "m"
  57.     TableMonth = CInt(NowMonth) - 1 
  58.      
  59.     '開始填充數據 
  60.     '外層循環,行數,Y 
  61.     Dim TargetDataStartRow As Integer 
  62.     Dim Cookie As Integer 
  63.     Dim A As String 
  64.     Dim B As String 
  65.     Cookie = 1 
  66.     TargetDataStartRow = 5 '默認從第5行開始 
  67.     For Y = TargetDataStartRow To (TargetDataStartRow + AllDataCounts - 1) 
  68.         '內層循環,列數,X 
  69.         For X = 1 To (MaxColTplCounts - 1) 
  70.             '寫入表頭 
  71.             Worksheets(Target).Cells(Y + Cookie - 1, X) = TargetTableHeader(X) 
  72.             '寫入數據 
  73.             '月份 
  74.             If (X = 1) Then Worksheets(Target).Cells(Y + Cookie, X) = TableMonth 
  75.             '姓名 
  76.             If (X = 2 Or X = 3) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X) 
  77.             '固定工資 9 + 10 
  78.             If (X = 4) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 9).Text) + Val(Worksheets(DataSource).Cells(Y, 10).Text) 
  79.             '績效薪資標準,三個 
  80.             If (X = 5 Or X = 6 Or X = 7) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X + 6) 
  81.             '缺勤扣款 
  82.             If (X = 8) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, 15) 
  83.             '其他工資 16 + 17 
  84.             If (X = 9) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 16).Text) + Val(Worksheets(DataSource).Cells(Y, 17).Text) 
  85.             '福利收入 18 -> 22 
  86.             If (X = 10) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 18).Text) + Val(Worksheets(DataSource).Cells(Y, 19).Text) + Val(Worksheets(DataSource).Cells(Y, 20).Text) + Val(Worksheets(DataSource).Cells(Y, 21).Text) + Val(Worksheets(DataSource).Cells(Y, 22).Text) 
  87.             '其它及獎懲 23 - 24 
  88.             If (X = 11) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 23).Text) + Val(Worksheets(DataSource).Cells(Y, 24).Text) 
  89.             '應發工資 和 其他扣款 
  90.             If (X = 12 Or X = 13) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, X + 13) 
  91.             '保險扣款 27 + 28 + 29 
  92.             If (X = 14) Then Worksheets(Target).Cells(Y + Cookie, X) = Val(Worksheets(DataSource).Cells(Y, 27).Text) + Val(Worksheets(DataSource).Cells(Y, 28).Text) + Val(Worksheets(DataSource).Cells(Y, 29).Text) 
  93.             '實發工資 
  94.             If (X = 15) Then Worksheets(Target).Cells(Y + Cookie, X) = Worksheets(DataSource).Cells(Y, MaxColCounts - 1) 
  95.         Next 
  96.         '把調整樣式的代碼放在這里,執行效率比較高 
  97.         '表頭,數據 
  98.         A = RTrim(LTrim(Str(Y + Cookie - 1))) 
  99.         B = RTrim(LTrim(Str(Y + Cookie))) 
  100.         '表頭 
  101.         Worksheets(Target).Rows(A & ":" & A).Select 
  102.         Selection.Font.Size = 10 
  103.         Selection.RowHeight = 24 
  104.         '數據 
  105.         Worksheets(Target).Rows(B & ":" & B).Select 
  106.         Selection.Font.Size = 11 
  107.         Selection.RowHeight = 24 
  108.         Selection.Font.Bold = True 
  109.         Cookie = Cookie + 1 
  110.     Next 
  111.     '數據生成完畢,開始樣式調整 
  112.     '總體調整 
  113.     Cells.Select 
  114.     With Selection 
  115.         .HorizontalAlignment = xlCenter 
  116.         .VerticalAlignment = xlCenter 
  117.         .WrapText = True 
  118.         .Orientation = 0 
  119.         .AddIndent = False 
  120.         .IndentLevel = 0 
  121.         .ShrinkToFit = False 
  122.         .ReadingOrder = xlContext 
  123.         .MergeCells = False 
  124.     End With 
  125.     Worksheets(Target).Range("A1").Select 
  126. End Sub 





 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本精品视频在线播放| 亚洲91精品在线| 欧美肥老太性生活视频| 国产精品丝袜一区二区三区| 中文字幕日韩av| 国产精品999| 国产精品自产拍在线观看中文| 日本一区二区三区四区视频| 久久久91精品国产| 亚洲国产精品va在看黑人| 国产精品久久国产精品99gif| 亚洲国产精品免费| 中文字幕亚洲第一| 秋霞成人午夜鲁丝一区二区三区| 欧美日韩在线视频一区二区| 亚洲成人激情小说| 欧美激情国产日韩精品一区18| 日韩电影中文字幕av| 亚洲欧美日韩在线高清直播| 高跟丝袜欧美一区| 日韩美女在线看| 国产中文字幕亚洲| 国产亚洲a∨片在线观看| 欧美一级片一区| 黑人巨大精品欧美一区二区一视频| 亚洲97在线观看| 久久久www成人免费精品| 欧美高清在线观看| 日韩视频免费在线观看| 精品视频在线播放色网色视频| 日韩一区二区三区在线播放| 一区二区三区天堂av| 国产a级全部精品| 亚洲免费视频在线观看| 国产美女精彩久久| 亚洲xxxx18| 国内精品一区二区三区| 亚洲国内高清视频| 色婷婷成人综合| 久久人人爽人人爽爽久久| 午夜欧美不卡精品aaaaa| 日本精品视频网站| 精品少妇v888av| 欧美成人午夜免费视在线看片| 97热在线精品视频在线观看| 欧美在线视频网| 久久五月天色综合| 亚洲伊人成综合成人网| 亚洲影院色在线观看免费| 国产欧美日韩精品在线观看| 91九色视频导航| 久久91亚洲精品中文字幕奶水| 国产97在线|日韩| 精品自拍视频在线观看| 久久精品电影网站| 92国产精品久久久久首页| 久久久噜噜噜久久中文字免| 欧美日韩中文字幕综合视频| 日韩三级成人av网| 亚洲xxxxx电影| 欧洲成人免费视频| 国产精品爽黄69天堂a| 欧美性猛交xxxx富婆| 性欧美激情精品| 亚洲精品之草原avav久久| 丝袜美腿亚洲一区二区| 国产精品海角社区在线观看| 自拍偷拍亚洲精品| 欧美日韩中文字幕| 精品国产91乱高清在线观看| 欧美日韩一区二区精品| 91av国产在线| 亚洲iv一区二区三区| 色综合久久久久久中文网| 日韩av网址在线观看| 91成品人片a无限观看| 亚洲电影av在线| 美日韩丰满少妇在线观看| 欧美成人黑人xx视频免费观看| 欧美性猛交xxxxx免费看| 国产精品视频白浆免费视频| 国产日韩精品一区二区| 国产日韩欧美91| 中文字幕在线观看亚洲| 亚洲欧洲在线观看| 日韩精品久久久久| 欧美日韩中文字幕日韩欧美| 国产精品久久久亚洲| 91精品久久久久久久久久| 亚洲精品久久久一区二区三区| 日韩欧美在线第一页| 亚洲精品国精品久久99热| 久久九九有精品国产23| 97久久超碰福利国产精品…| 亚洲护士老师的毛茸茸最新章节| 国产精品香蕉av| 欧美肥老太性生活视频| 在线丨暗呦小u女国产精品| 国产精品丝袜一区二区三区| 成人国产精品久久久久久亚洲| 成人国产精品一区| 国产精品亚洲欧美导航| 日韩美女毛茸茸| 久久亚洲成人精品| 国产精品视频专区| 成人黄色影片在线| 亚洲人成免费电影| 国产一区二区日韩| 亚洲第一精品夜夜躁人人躁| 欧美在线视频一区二区| 亚洲欧美精品伊人久久| 亚洲综合色av| 国产一区二区三区18| 亚洲永久在线观看| 日韩专区中文字幕| 色诱女教师一区二区三区| 性欧美xxxx视频在线观看| 亚洲激情小视频| 亚洲在线第一页| 日韩精品www| 亚洲bt欧美bt日本bt| 久久久成人精品| 国模gogo一区二区大胆私拍| 亚洲永久在线观看| 国产精品一区二区电影| 粗暴蹂躏中文一区二区三区| 亚洲福利小视频| 91精品国产高清自在线| 久久精品亚洲国产| 欧美午夜精品久久久久久浪潮| 最近2019中文字幕在线高清| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲欧洲美洲在线综合| 久久久国产精彩视频美女艺术照福利| 亚洲人成人99网站| 亚洲欧美一区二区三区四区| 亚洲男女性事视频| 亚洲伊人久久综合| 久久亚洲精品一区二区| 国产成人精品视| 欧美另类老肥妇| 色偷偷91综合久久噜噜| 91高潮在线观看| 亚洲一区二区三区视频播放| 成人a在线视频| 91国内产香蕉| 亚洲大胆美女视频| 粗暴蹂躏中文一区二区三区| 国产精品久久久久久久app| 91免费精品视频| 91豆花精品一区| 精品久久久一区二区| 国产97在线|亚洲| 红桃av永久久久| 91免费看片在线| 成人美女av在线直播| 激情懂色av一区av二区av| 国产视频亚洲精品| 国产午夜精品美女视频明星a级| 久久久久国产精品一区| 精品亚洲永久免费精品| 欧美日韩国产综合视频在线观看中文| 亚洲天堂av在线免费观看| 亚洲美女自拍视频|