返回列表 上一主題 發帖

[發問] 請問出勤系統設計

回復 59# v03586
修正的部分:


TOP

回復 61# c_c_lai

參考看看

    Ex.zip (430.82 KB)
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 62# GBKEE
兩個新版本 (左半部是您的、右半部是我的;使用共同之出勤內容) ,
我測了一下。將它貼成圖表以方便比對,您看看正確結果應為?
最近眼睛還在調養中,比對方面就有勞您了!

TOP

回復 63# c_c_lai
回復 62# GBKEE


    感謝兩位大大這些日子(1個月) 來的協助 !! 剛實測, 功能皆完成 !!! BUG也修正完畢...感謝不盡
     
     最後想請問...如果我未來想更改人機比 , 是要更改哪邊的判斷呢???

TOP

回復 63# c_c_lai
我附檔 人員人力回報表0903V1.xls  
人員回報加班不正確,這裡需修改
  1. '  ***********************************
  2.             If R.Range("J1") <> "" And R.Range("J1") <> E Then         '  **出勤資料庫 , 延長加班 資料   **
  3.                 i = Application.Match(UCase(R.Range("j1")), Ar1, 0)
  4.                 站別表(i, 日數) = 站別表(i, 日數) + 1       '  ** Day(Rng(1)); 加班別的加總
  5.             End If
複製代碼
回復 64# v03586
更改人機比 , 可依人員回頁位置修改.可自己練習修改.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 65# GBKEE
謝謝您!
明早我再研究研究,晚上視力較差!

TOP

回復 63# c_c_lai


    c_c_lai 大大 !! 我看不到你 #67~70 樓的圖片
   但是依照你這篇的回覆 !! 左圖是我規劃中的答案樣板!!!

    另外....原本只要點選離職, 人員回報功能執行後, 人員回報資料表 , 就會自動扣除已離職的人數
    0903版本中 , 不會扣除耶

     ex: 原本 1ST 總人力  75人 , V組 25人
            已離職一名  1ST  V組   , 人力沒有變成  74 ,  V組 24,

TOP

回復 64# v03586
你是說下列圖片的數據是正確的嗎?

TOP

本帖最後由 c_c_lai 於 2016-9-6 16:47 編輯

回復 67# v03586
EX:  修正提案 by  2016/9/5   v03586
假設 1ST 總人力 75人 V 組 25人 , P 組 23人  , K組 26人。
今天離職一位 1ST K 組人員, 點選人員回報功能鍵後;
總人力應該由 75人變更為 74,  K 組應同時調整異動為 25人。

表單 (DA編輯人員):
  1. Option Explicit

  2. Dim 復職旗標 As Boolean        '  如該員業已離職,而於事後又申請復職

  3. Private Sub 異動班別_Click()
  4.     If 異動班別.Value = True Then
  5.         異動_班別.Enabled = True
  6.     Else
  7.         異動_班別.Enabled = False
  8.     End If
  9. End Sub

  10. Private Sub 異動所屬領班_Click()
  11.     If 異動所屬領班.Value = True Then
  12.         異動領班.Enabled = True
  13.     Else
  14.         異動領班.Enabled = False
  15.     End If
  16. End Sub

  17. Private Sub 專長_Change()
  18.     Dim ar As Variant, sp As Variant
  19.    
  20.     ar = Array("DA", "Sub", "EC", "PL", "MH", "PT", "代理人")

  21.     專長1.Clear
  22.     專長2.Clear
  23.    
  24.     For Each sp In ar
  25.         If sp <> 專長 Then 專長1.AddItem sp
  26.     Next
  27. End Sub

  28. Private Sub 班別_Change()
  29.     領班.Clear
  30.    
  31.     If 班別 = "1ST" Then                         '  1ST 領班
  32.         領班.AddItem "宋小小"
  33.         領班.AddItem "林小小"
  34.     End If
  35.    
  36.     If 班別 = "2ND" Then                         '  2ND 領班
  37.         領班.AddItem "蔡小小"
  38.         領班.AddItem "洪小小"
  39.     End If
  40.    
  41.     If 班別 = "3RD" Then                         '  3RD 領班
  42.         領班.AddItem "顏小小"
  43.         領班.AddItem "林中小"
  44.     End If
  45. End Sub

  46. Private Sub 專長1_Change()
  47.     Dim ar As Variant, sp As Variant
  48.    
  49.     ar = Array("DA", "Sub", "EC", "PL", "MH", "PT", "代理人")

  50.     專長2.Clear
  51.    
  52.     For Each sp In ar
  53.         If sp <> 專長 And sp <> 專長1 Then 專長2.AddItem sp
  54.     Next
  55. End Sub

  56. Private Sub 異動_班別_Change()
  57.     異動領班.Clear
  58.    
  59.     If 異動_班別 = "1ST" Then                    '  異動 1ST 領班
  60.         異動領班.AddItem "宋小小"
  61.         異動領班.AddItem "林小小"
  62.     End If
  63.    
  64.     If 異動_班別 = "2ND" Then                    '  異動 2ND 領班
  65.         異動領班.AddItem "蔡小小"
  66.         異動領班.AddItem "洪小小"
  67.     End If
  68.    
  69.     If 異動_班別 = "3RD" Then                    '  異動 3RD 領班
  70.         異動領班.AddItem "顏小小"
  71.         異動領班.AddItem "林中小"
  72.     End If
  73. End Sub

  74. Private Sub 復職_Click()
  75.     If Len(人員工號.Text) = 4 And 復職 Then 填入資料
  76. End Sub

  77. Private Sub 確認_Click()
  78.     Dim Rng As Range, sh As Range, i As Integer
  79.    
  80.     With Worksheets("人力資料庫")
  81.         Set Rng = .Range("C:C").Find(人員工號.Value, LookIn:=xlValues, LookAt:=xlWhole)
  82.         If Not Rng Is Nothing Then                 '  人員工號已存在
  83.             If 異動班別.Value = True And (異動_班別.Value = "" Or 異動_班別.Value = "請選擇") Then
  84.                 MsgBox "勾選異動班別,請選擇要異動的班別!"
  85.                 Exit Sub
  86.             ElseIf 異動班別.Value = True Then
  87.                 .Cells(Rng.Row, 1) = 異動_班別.Value
  88.             ElseIf 異動班別.Value = False Then
  89.                 .Cells(Rng.Row, 1) = 班別.Value
  90.             End If
  91.                
  92.             If 異動所屬領班.Value = True And (異動_班別.Value = "" Or 異動_班別.Value = "請選擇") Then
  93.                 MsgBox "勾選異動異動所屬領班,請選擇要異動的領班!"
  94.                 Exit Sub
  95.             ElseIf 異動所屬領班.Value = True Then
  96.                 .Cells(Rng.Row, 2) = 異動領班.Value
  97.             ElseIf 異動所屬領班.Value = False Then
  98.                 .Cells(Rng.Row, 2) = 領班.Value
  99.             End If
  100.             
  101.             .Cells(Rng.Row, 3) = 人員工號.Value    '  工號
  102.             .Cells(Rng.Row, 4) = 姓名.Value        '  姓名
  103.             
  104.             If V.Value = True Then
  105.                 .Cells(Rng.Row, 5) = "V"
  106.             ElseIf P.Value = True Then
  107.                 .Cells(Rng.Row, 5) = "P"
  108.             ElseIf K.Value = True Then
  109.                 .Cells(Rng.Row, 5) = "K"
  110.             End If
  111.             
  112.             .Cells(Rng.Row, 6) = 到職日.Value      '  到職日
  113.             .Cells(Rng.Row, 7) = 專長.Value        '  主要專長
  114.             .Cells(Rng.Row, 8) = 專長1.Value       '  專長1
  115.             .Cells(Rng.Row, 9) = 專長2.Value       '  專長2
  116.             
  117.             Set sh = Worksheets("人員回報").[D4]
  118.             If .Cells(Rng.Row, 1) = "2ND" Then     '  班別
  119.                 Set sh = sh.Offset(23)             '  = [D27]
  120.             ElseIf .Cells(Rng.Row, 1) = "3RD" Then
  121.                 Set sh = sh.Offset(46)             '  = [D50]
  122.             End If

  123.             If 離職 = True Then
  124.                 '  Rows(rng.Row & ":" & rng.Row).Select
  125.                 '  Selection.Delete Shift:=xlUp
  126.                 '  Sheets("操作介面").Select
  127.                 '  員工請辭後,其員工資料暫不予以刪除;只在「備註欄」內記載「離職」事實。
  128.                 .Cells(Rng.Row, 10) = "該員已於 " & Format(Date, "YY/MM/DD") & " 離職"

  129.                 sh.Offset(1, 1) = sh.Offset(1, 1) - 1
  130.                 i = Application.Match(UCase(.Cells(Rng.Row, 5)), Array("V", "P", "K"), 0) '  **歸納組別
  131.                 sh.Offset(i) = sh.Offset(i) - 1
  132.             Else
  133.                 If 復職旗標 = True Then
  134.                     sh.Offset(1, 1) = sh.Offset(1, 1) + 1
  135.                     i = Application.Match(UCase(.Cells(Rng.Row, 5)), Array("V", "P", "K"), 0) '  **歸納組別
  136.                     sh.Offset(i) = sh.Offset(i) + 1
  137.                     復職旗標 = False
  138.                 End If
  139.                
  140.                 .Cells(Rng.Row, 10) = 備註.Value       '  Remark
  141.             End If
  142.         End If
  143.     End With
  144.    
  145.     Call 清空_Click
  146.     MsgBox "資料異動完成"
  147. End Sub

  148. Private Sub 清空_Click()
  149.     到職日.Value = ""
  150.     備註.Value = ""
  151.     人員工號.Value = ""
  152.     姓名.Value = ""
  153.     班別.Value = ""
  154.     領班.Value = ""
  155.     專長.Value = ""
  156.     專長1.Value = ""
  157.     專長2.Value = ""
  158.     離職.Value = False
  159.     人員工號.Enabled = True
  160.     確認.Enabled = False
  161. End Sub

  162. Private Sub 取消_Click()
  163.     Unload Me
  164. End Sub

  165. Private Sub 填入資料()
  166.     Dim Rng As Range
  167.    
  168.     復職旗標 = False
  169.    
  170.     With Worksheets("人力資料庫")
  171.         Set Rng = .Range("C:C").Find(人員工號.Value, LookIn:=xlValues, LookAt:=xlWhole)
  172.         If Not Rng Is Nothing Then                 '  人員工號已存在
  173.             If InStr(.Cells(Rng.Row, 10), "離職") > 0 And 復職 = False Then    '  Remark
  174.                 姓名.Value = .Cells(Rng.Row, 4)    '  姓名
  175.                 MsgBox .Cells(Rng.Row, 10)
  176.                 復職.Enabled = True
  177.                 姓名.Value = ""
  178.                 Exit Sub
  179.             End If

  180.             If 復職 Then .Cells(Rng.Row, 10) = "該員已於 " & Format(Date, "YY/MM/DD") & " 復職": 復職旗標 = True
  181.             備註.Value = .Cells(Rng.Row, 10)             '  Remark
  182.             
  183.             復職 = False
  184.             復職.Enabled = False
  185.             離職 = False
  186.                      
  187.             班別.Value = .Cells(Rng.Row, 1)        '  班別
  188.             領班.Value = .Cells(Rng.Row, 2)        '  領班
  189.             人員工號.Value = .Cells(Rng.Row, 3)    '  工號
  190.             姓名.Value = .Cells(Rng.Row, 4)        '  姓名
  191.             
  192.             If .Cells(Rng.Row, 5) = "V" Then
  193.                 V.Value = True
  194.             ElseIf .Cells(Rng.Row, 5) = "P" Then
  195.                 P.Value = True
  196.             ElseIf .Cells(Rng.Row, 5) = "K" Then
  197.                 K.Value = True
  198.             End If
  199.             
  200.             到職日.Value = .Cells(Rng.Row, 6)      '  到職日
  201.             專長.Value = .Cells(Rng.Row, 7)        '  主要專長
  202.             專長1.Value = .Cells(Rng.Row, 8)       '  專長1
  203.             專長2.Value = .Cells(Rng.Row, 9)       '  專長2
  204.             人員工號.Enabled = False
  205.             確認.Enabled = True
  206.             '  MsgBox "資料查詢完成"
  207.         Else
  208.             復職 = False
  209.             復職.Enabled = False
  210.             MsgBox "查無該員工資料"
  211.         End If
  212.     End With
  213. End Sub

  214. Private Sub 人員工號_Change()
  215.     人員工號.Text = UCase(人員工號.Text)
  216.     If Len(人員工號.Text) = 4 Then 填入資料
  217. End Sub

  218. Private Sub UserForm_Initialize()
  219.     班別.AddItem "1ST"
  220.     班別.AddItem "2ND"
  221.     班別.AddItem "3RD"
  222.    
  223.     異動_班別.AddItem "1ST"
  224.     異動_班別.AddItem "2ND"
  225.     異動_班別.AddItem "3RD"
  226.    
  227.     專長.AddItem "DA"
  228.     專長.AddItem "Sub"
  229.     專長.AddItem "EC"
  230.     專長.AddItem "PL"
  231.     專長.AddItem "MH"
  232.     專長.AddItem "PT"
  233.     專長.AddItem "代理人"
  234.     復職.Enabled = False
  235.     復職旗標 = False
  236. End Sub
複製代碼

TOP

本帖最後由 c_c_lai 於 2016-9-6 16:47 編輯

回復 67# v03586
你提及的 "人力資料庫" 排序問題:
  1. Private Sub 確認_Click()
  2.     Dim Rng As Range, sh As Range, i As Integer
  3.    
  4.     With Worksheets("人力資料庫")
  5.         Set Rng = .Range("C:C").Find(人員工號.Value, LookIn:=xlValues, LookAt:=xlWhole)
  6.         If Not Rng Is Nothing Then                 '  人員工號已存在
  7.         '
  8.         '
  9.         '
  10.         '
  11.         '
  12.         End If
  13.         
  14.         '  依班別、領班、組別 排序
  15.         With Range(.Range("A1"), .Range("J" & .Range("A" & Rows.Count).End(xlUp).Row))
  16.             .Sort key1:=.Cells(1, 1), key2:=.Cells(1, 2), Order1:=xlAscending, key3:=.Cells(1, 5), Order3:=xlDescending, Header:=xlYes
  17.         End With
  18.     End With
  19.    
  20.     Call 清空_Click
  21.     MsgBox "資料異動完成"
  22. End Sub
複製代碼

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題