返回列表 上一主題 發帖

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

本帖最後由 c_c_lai 於 2016-9-9 07:27 編輯

回復 80# v03586
你先把操作過程描述一次,出現錯誤訊息後選按 "偵錯"
然後你再把接下來只到錯誤點的畫面告訴我。
我也蠻好奇是哪裡越界了?
請問你是使用上傳的  "人員人力回報表0907R1" 檔案測試的嗎?

TOP

本帖最後由 v03586 於 2016-9-9 20:55 編輯

回復 81# c_c_lai


    我是用#79樓最新版本 , 點選 『出勤更新』的 Userfrom 就出錯了!! 應該是我有改到什麼, 我在研究一下

TOP

回復 81# c_c_lai


    確認後,,, 是我個人修改錯誤問題....已修正....另外想問一下
   目前程式出現一個問題,  就是新增第二班人員後, 人員回報資料表『第二班總人數』不會自動加總 !! 有測試過 1 , 3 班都沒問題
     

       另程式部分 K組  條件我之前設錯了  我有修改 ,  K組 禮拜一 是例假日 , 禮拜二是休息日
      程式碼修改如下 !! 應該沒錯誤吧@@....我去出勤更新去判斷是正確的!!
  1. Private Function OverTime(組別 As Variant) As String
  2.      '  <= 6   V組 六-休息日 /  P組 日-休息日 / K組 二-休息日
  3.      '  >6     V組 日-休息日 /  P組 六-休息日 / K組 二-休息日
  4.      '  If Month(xDay) <= 6 And (Weekday(xDay) = 7 Or Weekday(xDay) = 6) Then OverTime = True
  5.      '  If Month(xDay) > 6 And (Weekday(xDay) = 1 Or Weekday(xDay) = 7) Then OverTime = True
  6.      OverTime = "出勤日"
  7.      If Month(xDay) <= 6 Then
  8.         Select Case 組別.Name
  9.              Case "V"
  10.                 If Weekday(xDay) = 7 Then OverTime = "休息日"
  11.                 If Weekday(xDay) = 1 Then OverTime = "例假日"
  12.             Case "K"
  13.                 If Weekday(xDay) = 3 Then OverTime = "休息日"
  14.                 If Weekday(xDay) = 2 Then OverTime = "例假日"
  15.             Case Else
  16.                 If Weekday(xDay) = 1 Then OverTime = "休息日"
  17.                 If Weekday(xDay) = 7 Then OverTime = "例假日"
  18.         End Select
  19.     ElseIf Month(xDay) > 6 Then
  20.         Select Case 組別.Name
  21.              Case "P"
  22.                 If Weekday(xDay) = 7 Then OverTime = "休息日"
  23.                 If Weekday(xDay) = 1 Then OverTime = "例假日"
  24.              Case "K"
  25.                 If Weekday(xDay) = 3 Then OverTime = "休息日"
  26.                 If Weekday(xDay) = 2 Then OverTime = "例假日"
  27.             Case Else
  28.                 If Weekday(xDay) = 1 Then OverTime = "休息日"
  29.                 If Weekday(xDay) = 7 Then OverTime = "例假日"
  30.         End Select
  31.     End If
  32. End Function
複製代碼

TOP

回復 81# c_c_lai


    Sorry sir .....
莫名其妙又好了! 造成不便之處請原諒....

TOP

回復 84# v03586
再多多測試,如此才能測出其穩定、正確性。

TOP

本帖最後由 c_c_lai 於 2016-9-10 08:16 編輯

回復 84# v03586
我在人員回報前加了一段清除 "Actual (D3 欄)"等欄值的動作,
以觀察其資料是否正確寫入。
  1. Sub Main()       '  使用 Main 程式前, 需先指定 『xDay』 的日期
  2.     Dim e As Variant, Rng As Range, cts As Integer      '  , loc As String
  3.    
  4.     Set 回報班別 = CreateObject("SCRIPTING.DICTIONARY")
  5.     Set 人員回報 = CreateObject("SCRIPTING.DICTIONARY")
  6.    
  7.     人力資料讀取
  8.     Main_回報清除
  9.    
  10.     '  2016/9/10  Modified by C. C. Lai
  11.     With Sheets("人員回報")
  12.         For Each e In Array(.Range("D5"), .Range("D28"), .Range("D51"))
  13.             e.Resize(3).Value = ""                 '  Actual (D3 欄)
  14.             e.Offset(, 1) = ""                     '  ** (班別) 總人數
  15.             e.Offset(4, -1).Resize(8).Value = ""   '  ** (班別各專長) 人數
  16.         Next
  17.     End With
  18.    
  19.     For cts = 1 To 2   '  第一階段(cts=1)以正常班別為判斷基準;第二階段(2)則純以加班班別為判斷基準。
複製代碼

TOP

回復 86# c_c_lai


    感謝c_c_lai 大的用心~系統已經Release給人員使用 ,這幾天持續觀察 , 是否有問題!!!

TOP

回復 87# v03586
別客氣!
其實你應該謝謝開始時幫你解題的 yifan2599、jeffrey628litw 兩位大大;
在此修正中著墨最深的莫過於 GBKEE 版大了,他的構思、程式模組結構之細膩,
使得流程得以如此順暢,應全歸功於 GBKEE 版大了。
我只不過是沾沾醬油而已。
Parallel Run 後如有問題再提出吧!

TOP

回復 88# c_c_lai


    謝謝各位的幫忙...!! 中秋連假的使用者在系統操作大致上沒問題
    只是有幾個問題 不知道Excel 是否能做到這樣的優化
     因使用者發問說, 工廠上班 休假的少 出勤的多, 如果一筆一筆Key in  時間夠長,
     不曉得Excel VBA 能否做到批次處理
           ex : V組編輯出勤 一鍵全部打勾, 不出勤的就自己不打勾 , 在去編輯出勤資料
                                ex :專長是DA的 更改操機數 , 是否有加班的 !!!

     可否讓系統預設 操機數 一開始基本2台 , 如後續要調整 在自己選擇 1, 3 , 4 ??

TOP

回復 89# v03586
不太清楚你的表述,一次全部打勾?
(將該 V 組資料一次全寫入 "出勤資料庫" ?)
A0E.png
2016-9-19 16:42

TOP

        靜思自在 : 難行能行,難捨能捨,難為能為,才能昇華自我的人格。
返回列表 上一主題