我想創建一個共享的Excel時間表,供大約30名員工用於他們的日常計時。Excel VBA每月計時
這計時錶將記錄員工的日常時間戳他們:
Start of Pre-shift OverTime, End of Pre-shift Overtime,
Time-In, Time-Out,
Start of 1st break, End of 1st break,
Start of Lunch, End of Lunch,
Start of 2nd break, End of 2nd break,
Start of Post-shift OverTime, End of Post-shift Overtime, Etc.
我創建的窗體界面,特定員工可以勾選一個CheckBox
記錄他/她的時間戳:
時間 - 中,超時,第一次休息開始,第一次休息結束等。時間戳然後被轉發到Sheet2中的表格,該表格捕獲該員工當天的所有時間戳。
我的問題是:當員工第二天回來工作時,前一天的所有時間戳會被當前時間的時間戳覆蓋。
一位專家給了我一個示例代碼,但「時間存儲」工作表中的數據似乎並不出現在一行中。相反,它出現在一個向下的對角線模式。
如果你能以任何方式幫助我,我將非常感激。
下面是示例代碼:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngC As Range
Dim lngR As Long
Dim shtS As Worksheet
Set shtS = Worksheets("Time Storage")
If Intersect(Target, Range("B4:B12")) Is Nothing Then Exit Sub
lngR = shtS.Cells(shtS.Rows.Count, "A").End(xlUp).Row
If shtS.Cells(lngR, "A").End(xlUp).Value <> Date Then
lngR = shtS.Cells(shtS.Rows.Count, "A").End(xlUp).Row + 1
shtS.Cells(lngR, "A").Value = Date
End If
For Each rngC In Intersect(Target, Range("B4:B12"))
If rngC.Value <> "" Then
shtS.Cells(lngR, rngC.Row - 2).Value = Target.Value
End If
Next rngC
End Sub
(I輸入時間戳到細胞:名爲「時間輸入」片材的「B4 B12」,我至M它們存儲到B柱名爲片的「時間存儲」
問題是:。片似乎在「時間存儲」中的數據並沒有在一個單列水平出現相反,它會出現在一個向下的對角線圖案)
。編輯:分享截圖:
你應該添加你的牀單的數據樣本「時代進入」和「時間存儲「 - 期望的結果(甚至讓他們手動) –
對於你想要達到的目標,我不會使用'Worksheet_Change'事件,而是一個被Button或其他東西調用的Sub。 –
我明白你在說什麼。我猜這裏使用Worksheet_Change事件的原因是因爲我們試圖自動執行此操作(以便每次創建時間戳時不再需要單擊任何按鈕)。但我絕對明白你的觀點。非常感謝您的反饋。 – studentlearner