Board logo

標題: [發問] 3段式輪班法 [打印本頁]

作者: h60327    時間: 2012-8-13 15:57     標題: 3段式輪班法

[attach]12107[/attach][attach]12107[/attach]請教各位先進,有一輪值表分為3種輪值方式,輪值人員為B90-E128範圍,並依平日上班時段分為2班,平日下班時段1班,以及例假日2班,3種班表各自輪流服勤,假設7月1日(星期日)由A8開始輪值,7月2日上班日第1班由S1開始輪值,7月2日平常日下班時段由A1開始輪值,請問是否可用VBA取得每月之輪值表呢?麻煩各位先進了。
作者: GBKEE    時間: 2012-8-14 08:06

回復 1# h60327
試試看

[attach]12118[/attach]
作者: c_c_lai    時間: 2012-8-14 08:34

回復 2# GBKEE
排班 R, Range(R)
請教您第二個引入參數,為何使用 Range(R),其用意何在?
作者: h60327    時間: 2012-8-14 09:18

不是很了解,但是透過定義名稱取得每一個班表的輪序是一個好構想,只是由於每一個月的星期排序並未固定,可否透過程序自動調整調整顯示呢?例如7月1日是星期日,8月1日是星期三等,再次感謝
作者: GBKEE    時間: 2012-8-14 10:06

本帖最後由 GBKEE 於 2012-8-14 10:48 編輯

回復 3# c_c_lai ]
Range(R),其用意何在?  
R="平日" ->  Range("平日")     
定義"平日" 的範圍"A1:C10"  => Range("A1:C10")

回復 4# h60327
三個班表的輪序 都有註明輪序符號
每月制定排班表示都依每段班表最後符號開始, 應該不需理會每月的星期排序吧.

當輪序到底時,會回到第一個員工開始輪序
  1. Private Sub 排班(R As Range, Rng As Range)
  2.     Dim X As Integer, xMatch As Integer, xRng As Range
  3.     X = Application.CountA(Rng)
  4.     If X = Rng.Count Then    '已是最後排班員工
  5.         Rng.Clear
  6.         X = 0
  7.     End If
  8.     Rng.Cells(X + 1) = "◎"
  9.     Set xRng = Rng.Cells(X + 1).Offset(, -1)
  10.     xMatch = Application.Match(xRng.Text, Range("人員資料").Columns(3), 0)
  11.     R.Offset(, 1).Resize(, 3) = Range("人員資料").Rows(xMatch).Value
  12. End Sub
複製代碼

作者: keovin790916    時間: 2012-11-2 14:12

如何把代碼打到,裡面?
作者: kkooo15    時間: 2012-11-13 13:38

回復 6# keovin790916
巨集

請ALT+F11

就可以輸入公式了
作者: user999    時間: 2012-11-14 11:25

很好用的程式,
只想再進一步試問
如果在排平日班時,排到特定人時,要固定在下午班
這又該如果修改(現實總有一些特殊人員)
謝謝!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)