Last active
May 5, 2019 12:47
-
-
Save htmllifehack/fcf5b28df84ad54f830658eca4790356 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sub member() | |
'sheet("スタッフ")に入力されている人数をカウント | |
'セルの結合をしているため数値を2倍に増やす | |
last_column = Worksheets("スタッフ").Cells(4, 2).End(xlDown).row * 2 | |
'日付をカウント | |
last_row = Worksheets("出勤表").Cells(2, 7).End(xlDown).row | |
'シートの保護とセルのロックを解除する | |
Worksheets("出勤表").Unprotect | |
Cells.locked = False | |
'シート(スタッフ)のメンバーをシート勤務表に反映させる | |
Worksheets("スタッフ").Select | |
member_last_row = Cells(4, 2).End(xlDown).row | |
Worksheets("出勤表").Select | |
' horizontalAligment = xlCenterで中央揃え | |
' borders.LineStyle = xlContinuousで格子罫線 | |
c = 0 | |
For i = 4 To member_last_row | |
Set member_cell = Range(Cells(2, 9 + c), Cells(2, 9 + c + 1)) | |
member_cell.Merge | |
member_cell.HorizontalAlignment = xlCenter | |
'member_cell.Borders.LineStyle = xlContinuous | |
Cells(2, 9 + c) = Worksheets("スタッフ").Cells(i, 2) | |
c = c + 2 | |
Next i | |
'出退勤の文字を表示 | |
c2 = 0 | |
For j = 4 To member_last_row | |
Set start_cell = Cells(3, 9 + c2) | |
start_cell.Value = "出勤" | |
start_cell.HorizontalAlignment = xlCenter | |
start_cell.Borders.LineStyle = xlContinuous | |
Set leaving_cell = Cells(3, 10 + c2) | |
leaving_cell.Value = "退勤" | |
leaving_cell.HorizontalAlignment = xlCenter | |
'leaving_cell.Borders.LineStyle = xlContinuous | |
c2 = c2 + 2 | |
Next j | |
days_last_row = Cells(3, 7).End(xlDown).row '34 | |
Range(Cells(2, 9), Cells(days_last_row, (member_last_row - 3) * 2 + 8)).Borders.LineStyle = xlContinuous | |
Worksheets("出勤表").Select | |
'シートの保護とセルのロックを行う | |
Cells.locked = True | |
Range("b4:e6").locked = False | |
Worksheets("出勤表").Protect | |
End Sub | |
Sub start_work() | |
'シートの保護とセルのロックを解除する | |
Worksheets("出勤表").Unprotect | |
Cells.locked = False | |
'sheet("スタッフ")に入力されている人数をカウント | |
'セルの結合をしているため数値を2倍に増やす | |
last_column = Worksheets("スタッフ").Cells(4, 2).End(xlDown).row * 2 | |
'日付をカウント | |
last_row = Worksheets("出勤表").Cells(2, 7).End(xlDown).row | |
days = 0 | |
mem = 0 | |
If Range("i2") = "" Then | |
MsgBox "スタッフが反映されていません。" & Chr(13) & "スタッフ反映ボタンを押してください。" | |
Else | |
If Range("b4") = "" Then | |
MsgBox "スタッフが選択されていません。" | |
Else | |
'戻ることができないので初めにバックアップを取っておく | |
Worksheets("出勤表").Range(Cells(2, 2), Cells(last_row, last_column)).Copy | |
Worksheets("バックアップ").Range("b2").PasteSpecial | |
Application.CutCopyMode = True | |
'B4のスタッフ名と一致する列を検索 | |
For i = 0 To last_column + 1 | |
If Cells(2, i + 9) = Range("b4") Then | |
mem = i + 9 | |
End If | |
Next i | |
'今日の日付と一致する行を検索 | |
For k = 0 To 31 | |
If Cells(4 + k, 7) = Range("a2") Then | |
days = 4 + k | |
End If | |
Next k | |
'現在の時刻を打刻 | |
Cells(days, mem) = Format(Time, "hh:mm:ss") | |
End If | |
End If | |
'シートの保護とセルのロックを行う | |
Cells.locked = True | |
Range("b4:e6").locked = False | |
Worksheets("出勤表").Protect | |
End Sub | |
Sub leaving_work() | |
'出勤マクロと同様 | |
'シートの保護とセルのロックを解除する | |
Worksheets("出勤表").Unprotect | |
Cells.locked = False | |
'sheet("スタッフ")に入力されている人数をカウント | |
'セルの結合をしているため数値を2倍に増やす | |
last_column = Worksheets("スタッフ").Cells(4, 2).End(xlDown).row * 2 | |
'日付をカウント | |
last_row = Worksheets("出勤表").Cells(2, 7).End(xlDown).row | |
days = 0 | |
mem = 0 | |
If Range("i2") = "" Then | |
MsgBox "スタッフが反映されていません。" & Chr(13) & "スタッフ反映ボタンを押してください。" | |
Else | |
If Range("b4") = "" Then | |
MsgBox "スタッフが選択されていません。" | |
Else | |
For i = 0 To last_column | |
If Cells(2, i + 9) = Range("b4") Then | |
mem = i + 9 + 1 | |
End If | |
Next i | |
For k = 0 To 31 | |
If Cells(3 + k, 7) = Range("a2") Then | |
days = 3 + k | |
End If | |
Next k | |
If Cells(days, mem - 1) = "" Then | |
MsgBox Range("b4").Value & "さんは出勤していません。" | |
Else | |
'戻ることができないので初めにバックアップを取っておく | |
Worksheets("出勤表").Range(Cells(2, 2), Cells(last_row, last_column)).Copy | |
Worksheets("バックアップ").Range("b2").PasteSpecial | |
Application.CutCopyMode = True | |
Cells(days, mem) = Format(Time, "hh:mm:ss") | |
End If | |
End If | |
End If | |
'シートの保護とセルのロックを行う | |
Cells.locked = True | |
Range("b4:e6").locked = False | |
Worksheets("出勤表").Protect | |
End Sub | |
Sub clear() | |
msg = MsgBox("クリアしますか?", vbYesNo) | |
If msg = vbYes Then | |
'シートの保護とセルのロックを解除する | |
Worksheets("出勤表").Unprotect | |
Cells.locked = False | |
last_column = Worksheets("スタッフ").Cells(4, 2).End(xlDown).row - 3 | |
last_row = Cells(2, 7).End(xlDown).row | |
Set member_cell = Worksheets("出勤表").Range(Cells(2, 9), Cells(last_row, last_column * 2 + 10)) | |
member_cell.UnMerge | |
member_cell.Borders.LineStyle = xlLineStyleNone | |
Worksheets("出勤表").Range(Cells(2, 9), Cells(last_row, last_column * 2 + 10)).ClearContents | |
Worksheets("バックアップ").Select | |
Set member_cell_b = Worksheets("バックアップ").Range(Cells(2, 9), Cells(last_row, last_column * 2 + 10)) | |
member_cell_b.UnMerge | |
member_cell_b.Borders.LineStyle = xlLineStyleNone | |
Worksheets("バックアップ").Range(Cells(2, 9), Cells(last_row, last_column * 2 + 10)).ClearContents | |
Worksheets("出勤表").Select | |
'シートの保護とセルのロックを行う | |
Cells.locked = True | |
Range("b4:e6").locked = False | |
Worksheets("出勤表").Protect | |
Else | |
MsgBox "処理はキャンセルされました" | |
End If | |
End Sub | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment