返回列表 上一主題 發帖

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

本帖最後由 v03586 於 2016-8-15 12:06 編輯

回復 39# GBKEE


    Sorry....資質較差!! 剛才發現 已修正!!! 已解決這個問題  !!! 感謝版大     整合頁面, 真的難有邏輯去想, 我再思考嘗試如何呈現好了....
          我目前可以想的到的就是基本資料 紫色框框 用函數 等於 『人員回報』資料表的對應欄位
           藍色框框用複製『人員回報』資料表的對應日期貼過去...

                  唯獨不知道用什麼去判斷上面日期去計算人機比的數量( 紅色框框 ) ,
                只知道要從出勤資料庫撈出勤資料庫中, 操機數 1, 2, 3 , 4 台的各有幾位....
             畢竟僅需要呈現『六』『日』『一』『二』
               
           By the way ....   
  
Q1.png
剛剛要做最後的Check , 發現加入新成員 , 突然不能使用了, 跳出這個Error code, 不知道是出了什麼問題
  1. Private Sub UserForm_Initialize()
  2.   
  3.    班別.List = Da_Data(1).keys
  4.    專長.List = Da_Data(4).keys
  5.     到職日 = Date
  6. End Sub
複製代碼

TOP

回復 41# v03586


    我稍微整理了一下各位大大的程式,大多都可用了。
20160815 人員人力回報表 V16.rar (484.99 KB)

TOP

回復 42# jeffrey628litw


    感謝大大不辭辛勞的修改 !!!
   今日持續測試功能是否有BUG , 發現 .. 假設有人員離職 , 但先前已經有在『出勤資料庫』資料庫出現的名字
   會出現以下錯誤

Q1.png


然後回到『回報頁面』 看 會出現資料都向下位移 !!
如果去『出勤資料庫』將離職人員刪掉的話一樣不會恢復正常
除非要先將『回報頁面』的(紅框)資料先刪光, 在去按回報按鈕, 才恢復正常
請問這個如何修正呢?? 可以將離職後的人員資料同步在『出勤資料庫』刪掉? 就能避免這問題??
  1. Private Sub Main_回報寫入(Rng As Range)
  2.         Dim R As Range, St As String, xRng As Range, 日數 As Integer, i As Integer
  3.         For Each R In Rng.Rows
  4.                 ' ** R ->Sheets("出勤資料庫")的整列***********
  5.                
  6.                 St = R.Cells(1, "A") & R.Cells(1, "B") & R.Cells(1, "D") & R.Cells(1, "E") & R.Cells(1, "F")
  7.                 'St =出勤資料:  班別&所屬領班&&工號&姓名& 組別
  8.             
  9.                 If 人員回報.EXISTS(St) Then  '** St(出勤資料)存在字典物件中  -> 同一工號時
  10.                     Set xRng = 人員回報(St)                      '** -> 同一班別工號人員的位置
  11.                 Else     '** St(出勤資料)不存在字典物件
  12.                     
  13.                     Set xRng = Sheets("人員回報").Range("a" & Rows.Count).End(xlUp).Offset(1)
  14.                     '** xRng 變數設為 Sheets("人員回報"),A欄最底部的列往上到有資料 儲存格的下一列
  15.                     
  16.                     Set 人員回報(St) = xRng                     '** 字典物件,工號: 設為xRng變數
  17.                 End If
  18.                 日數 = Day(R.Range("C1"))
  19.          With xRng
  20.               ' ** xRng ->Sheets("人員回報").Range("a"列 )***********
  21.                     .Range("A1") = R.Range("A1")                                   '** 班別
  22.                     .Range("B1") = R.Range("B1")                                   '** 領班
  23.                     .Range("C1") = .Range("C1") + R.Range("k1") + IIf(R.Range("L1") = "True", R.Range("I1"), 0)
  24.                     '**R.Range("k1")->加班時數 ,R.Range("L1") = "TRUE"->假日:+加出勤時數-> R.Range("I1")
  25.                     
  26.                     .Range("D1") = R.Range("D1")                                  '**工號
  27.                     .Range("E1") = R.Range("E1")                                   '** 姓名
  28.                     .Range("F1") = DA工號(R.Range("D1") & "")(1, 7)    '**主專長
  29.                     .Range("G1") = R.Range("F1")                                   '** 組別
  30.                     .Cells(1, 日數 + 7) = R.Range("G1")                          '** 出勤站別
  31.                     ''*********************************************
  32.                     i = Application.Match(UCase(.Range("G1")), Array("V", "P", "K"), 0) '**歸納組別
  33.                     組別表(i, 日數) = 組別表(i, 日數) + 1
  34.                     
  35.                     '***********************************
  36.                     If R.Range("J1") <> "" Then                                         '**出勤資料庫 , 延長加班 資料   **
  37.                         i = Application.Match(UCase(R.Range("A1")), Ar1, 0)
  38.                         站別表(i, 日數) = 站別表(i, 日數) + 1          '**Day(Rng(1)); 延長加班的加總
  39.                     End If
  40.                     
  41.                     i = Application.Match(UCase(R.Range("G1")), Ar1, 0)     '**出勤資料庫 , 出勤站別  資料**
  42.                     站別表(i, 日數) = 站別表(i, 日數) + 1
  43.                     '**DA 開機數 **
  44.                     If i = UBound(Ar1) + 1 Then 站別表(UBound(Ar1) + 2, 日數) = 站別表(UBound(Ar1) + 2, 日數) + R.Range("H1")
  45.                     '*********************************************
  46.                 End With
  47.         Next
  48. End Sub
複製代碼

TOP

本帖最後由 c_c_lai 於 2016-8-18 15:55 編輯

回復 43# v03586
回復 35# GBKEE
我應用 GBKEE 版大最後的的版本稍加整理,
亦融合了 jeffrey628litw 大大的(新增、修改表單);
順便將你的提問一併予以處理,並加減修飾版面。
(新增、修改表單內之內容及版面稍予調整)
近期 (因個人私人因素) 內如還仍有問題,
你就再請益 GBKEE 版大 吧!
人員人力回報表(GBKEE).rar (468.92 KB)

TOP

回復 39# GBKEE
回復 42# jeffrey628litw
回復 44# c_c_lai



感謝三位大大的整合 !! , 這幾天嘗試將 jeffrey628litw 大大 與 GBKEE版大 及 c_c_lai  大大的版本做個修改

發現問題如下,
1.  c_c_lai  大大的版本 , 構想非常棒, 新增了復職功能, 但離職後 『更新出勤』那個功能, 還是會顯示已離職的人員
   長期下來使用者, 無法一一記住某些人已經離職(工廠流動率大) , 再者更新出勤後已離職的人還是會在出勤的表格內
   1-1. 會讓系統操作者不知道她到底在不在 !! 除非已離職的不顯示在編輯出勤的欄位中

2.  GBKEE版大 版本, 測試下來就是離職後的人員, 如果『出勤資料庫』沒有同步刪除已離職資料,  人員回報後會出錯
    2-1. 版大版本修改起來是否比較容易? 僅需要同步刪除『出勤資料庫』中的資料就不會有出錯???


TOP

回復 45# v03586
請問你那『出勤資料庫』內的所有資料是透過
何種方式產生 (新增) 出來的? 人工作業一一輸入?
一般在員工離職前所有已存在之『出勤資料庫』
內資料是不允許再予以異動的,且其之前已出勤
之事實是不可予以否定、刪除的。
基本上,線上提問時回覆者只是盡力依你的需求面
給予較正面 (引導式) 的回應,而非全然幫你創建新的局面。
提問上應有的佈局與邏輯走向是提問人要具備提出的,
回覆者只是助你解惑、導入、以及些許有意的實質提示。

TOP

回復 46# c_c_lai
手術後要多休息.

    回復 45# v03586
提問上應有的佈局與邏輯走向是提問人要具備提出的,
回覆者只是助你解惑、導入、以及些許有意的實質提示

那試試看
  1. Private Sub UserForm_Initialize()
  2.     設定
  3.     人力資料讀取
  4.     離職檢視 '****加上這個看看
  5.     班別.List = DA班別.keys
  6.     延長加班.List = DA班別.keys
  7.     可操機數.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  8.     V = True
  9.     班別.ListIndex = 0
  10.     年.List = Array(Year(Date) - 2, Year(Date) - 1, Year(Date))  '3年內的範圍
  11.     月.List = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
  12.     年.ListIndex = 年.ListCount - 1
  13.     月.ListIndex = Month(Date) - 1
  14.     日.ListIndex = Day(Date) - 1
  15. End Sub
複製代碼
  1. Sub 離職檢視()
  2.     Dim Rng As Range, i As Long, St   As String
  3.     With Sheets("出勤資料庫")
  4.         For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
  5.             St = .Cells(i, "D")
  6.             If DA工號.EXiSTS(St) = False Then
  7.                 If Rng Is Nothing Then
  8.                     Set Rng = .Cells(i, "D").EntireRow
  9.                 Else
  10.                     Set Rng = Union(.Cells(i, "D").EntireRow, Rng)
  11.                 End If
  12.             End If
  13.         Next
  14.     End With
  15.     If Not Rng Is Nothing Then Rng.Delete
  16.     Set Rng = Nothing
  17.     With Sheets("人員回報")
  18.         For i = 63 To .Range("A" & Rows.Count).End(xlUp).Row
  19.             St = .Cells(i, "D")
  20.             If DA工號.EXiSTS(St) = False Then
  21.                 If Rng Is Nothing Then
  22.                     Set Rng = .Cells(i, "D").EntireRow
  23.                 Else
  24.                     Set Rng = Union(.Cells(i, "D").EntireRow, Rng)
  25.                 End If
  26.             End If
  27.         Next
  28.     End With
  29.     If Not Rng Is Nothing Then Rng.Delete
  30. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

[版主管理留言]
  • GBKEE(2016/8/24 05:16): 附檔看看

回復 47# GBKEE


    加入程式碼後, 出勤編輯還是會顯示出離職人員讓使用者編輯耶 !

TOP

回復 48# v03586


    檔案如下, 此檔案已經將整合頁面與人員回報頁面結合了, 部分程式碼修改後發現跳格...]
可以請大大指點我哪邊沒改好嗎?? (下圖紅框處)   , 另想請板大協助1:1、1:2、1:3、1:4 的部分由可操機數做個加總
可以請大大順便教我,  如果未來比例部分如果有增加 我需要如何修改嗎?? 假設目前只到1:4 , 未來1:7時 我修改了欄位, 程式碼部分要相對修改哪邊



1.  另外...樓上提到的...如下圖, 已離職部分, 還是會出現在編輯欄位, 會讓使用者分不清楚已離職人員
會繼續編輯, 如果長久以來離職的人變多...編輯頁面就會一大串都是離職人員( 且離職人員不小心編輯 , 會算在出勤率當中 )

2. 如發現已更新出勤, 但發現人員更新錯誤, 要將人員取消出勤 , 似乎不能取消, 系統基本設置出勤一定要填1-8小時, 如人員臨時當天被告知明天不用來
出勤系統無法修改讓他變0耶







人員人力回報表(GBKEE).rar (385.77 KB)

TOP

回復 49# v03586
1:1、1:2、1:3、1:4 的部分由可操機數做個加總
如何加總??
附檔   新加上 離職人員的踢除+ 出勤的取消

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

TOP

        靜思自在 : 做好事不能少我一人,做壞事不能多我一人。
返回列表 上一主題