返回列表 上一主題 發帖

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

回復 72# v03586
是這樣嗎? 這就是我感覺困惑的觀念點:

TOP

回復 74# v03586
這是我最近修正後的 (Relaese) 版本 :
人員人力回報表0907R1.rar (393.32 KB)

TOP

回復 76# v03586
會出現『沒有出勤人員』,是因為你目前的
『出勤資料庫』無十月份的出勤紀錄。
你可以檢查一下你的『出勤資料庫』。

TOP

本帖最後由 c_c_lai 於 2016-9-8 19:59 編輯

回復 76# v03586
找到原因了。
  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.    
  11.     For cts = 1 To 2   '  第一階段(cts=1)以正常班別為判斷基準;第二階段(2)則純以加班班別為判斷基準。
  12.         Main_回報資料 (cts)                     '  2016/09/01 Modied by C. C. Lai
  13.         
  14.         If 回報班別.Count = 0 Then
  15.             Msg = True
  16.             MsgBox Format(xDay, "YYYY月MM份 !") & " 沒有出勤人員"
  17.             Exit Sub
  18.         End If
複製代碼
在第二階段,有可能全無 "延長加班", 故應隨即跳離本執行中模組。
修正為:
  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.    
  11.     For cts = 1 To 2   '  第一階段(cts=1)以正常班別為判斷基準;第二階段(2)則純以加班班別為判斷基準。
  12.         Main_回報資料 (cts)                     '  2016/09/01 Modied by C. C. Lai
  13.         
  14.         If 回報班別.Count = 0 Then
  15.             Msg = True
  16.             [color=Red]If cts = 1 Then[/color]
  17.                 MsgBox Format(xDay, "YYYY月MM份 !") & " 沒有出勤人員"
  18.             [color=Red]ElseIf cts = 2 Then[/color]   '  在第二階段,有可能全無 "延長加班", 故隨即跳離本執行中模組。
  19.                 [color=Red]Msg = False
  20.             End If[/color]
  21.             Exit Sub
  22.         End If
複製代碼

TOP

回復 76# v03586
附上更新程式:
人員人力回報表0907R1.rar (418.9 KB)

TOP

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

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

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

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

TOP

回復 89# v03586
不太清楚你的表述,一次全部打勾?
(將該 V 組資料一次全寫入 "出勤資料庫" ?)

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題