Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


24474 / 76737 ←次へ | 前へ→

【57611】Re:勤怠の自動チェック方法について質問です。
回答  こたつねこ  - 08/9/4(木) 21:30 -

引用なし
パスワード
   はるとさん、こんばんは

仕事場の都合でなかなか返事ができない状況で申し訳ないです。

>・1日が5行あり、J列とK列以外は列ごとに結合されています。
> (10行目〜15行目までが10日のようなものです。)
>・休憩開始と終了時間は5行のうち昼休みを1行目、17:45以降の休憩を2行目という形で入力しています。
>・休憩時間以外は、結合された列の1行目に入力されています。
行単位でセルの結合をされているようなので、前のVBAではうまく動かないですね。

はるとさんのワークシートはこちらから見れませんので質問する際は、かみちゃん
さんのおっしゃるとおり、シートレイアウトやサンプルデータを提示したほうが、
手戻りが少なくていいと思います。

データの入力形式によってはうまく動かないかもしれませんが、こんな感じでどう
でしょうか?

Public Sub 勤怠チェック()
  '定数
  Const シート名 As String = "勤怠"
  Const 日付 As String = "A"
  Const 出社時間列 As String = "T"
  Const 始業時間列 As String = "H"
  Const 退社時間列 As String = "U"
  Const 終業時間列 As String = "I"
  Const 休憩開始列 As String = "J"
  Const 休憩終了列 As String = "K"
  Const 遅刻許容 As Date = #12:30:00 AM#
  Const 早退許容 As Date = #12:30:00 AM#
  Const 休憩チェック As Date = #6:00:00 PM#
  Const 休憩開始時間 As Date = #5:45:00 PM#
  Const 休憩終了時間 As Date = #6:00:00 PM#
  Const 一日の行数 As Long = 5
  
  Dim SHT As Excel.Worksheet
  Dim StartRow As Long
  Dim EndRow As Long
  Dim iii As Long
  Dim jjj As Long
  Dim blnCHECK As Boolean

  StartRow = 2  'データ開始行は2行目から
  Set SHT = ThisWorkbook.Sheets(シート名)
  EndRow = SHT.Range(日付 & "65536").End(xlUp).Row
  
  For iii = StartRow To EndRow Step 5
    '出社時間チェック
    If (SHT.Range(始業時間列 & iii).Value + 遅刻許容 - SHT.Range(出社時間列 & iii).Value) <= 0 Then
      SHT.Range(出社時間列 & iii).Interior.Color = vbRed
    End If
    
    '退社時間チェック
    If (SHT.Range(終業時間列 & iii).Value - 早退許容 - SHT.Range(退社時間列 & iii).Value) >= 0 Then
      SHT.Range(退社時間列 & iii).Interior.Color = vbRed
    End If
    
    '休憩時間チェック
    If (休憩チェック <= SHT.Range(退社時間列 & iii).Value) Then
      blnCHECK = True
      For jjj = 0 To 一日の行数 - 1
        If (SHT.Range(休憩開始列 & iii).Offset(jjj, 0).Value = 休憩開始時間) Then
          If (SHT.Range(休憩終了列 & iii).Offset(jjj, 0).Value = 休憩終了時間) Then
            blnCHECK = False
            Exit For
          End If
        End If
      Next
      
      If blnCHECK Then
        SHT.Range(休憩開始列 & iii & ":" & 休憩終了列 & iii + 一日の行数 - 1).Interior.Color = vbRed
      End If
    End If
  Next
End Sub

0 hits

【57592】勤怠の自動チェック方法について質問です。 はると 08/9/3(水) 17:36 質問
【57593】Re:勤怠の自動チェック方法について質問で... kanabun 08/9/3(水) 18:56 発言
【57594】Re:勤怠の自動チェック方法について質問で... はると 08/9/3(水) 21:02 発言
【57599】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/3(水) 22:26 回答
【57600】Re:勤怠の自動チェック方法について質問で... はると 08/9/4(木) 0:31 発言
【57601】Re:勤怠の自動チェック方法について質問で... かみちゃん 08/9/4(木) 5:33 発言
【57611】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/4(木) 21:30 回答
【57622】Re:勤怠の自動チェック方法について質問で... はると 08/9/5(金) 13:30 発言
【57627】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/5(金) 23:01 回答
【57635】Re:勤怠の自動チェック方法について質問で... はると 08/9/6(土) 11:10 質問
【57639】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/6(土) 12:53 発言
【57643】Re:勤怠の自動チェック方法について質問で... はると 08/9/6(土) 17:38 発言
【57647】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/6(土) 19:53 発言
【57655】Re:勤怠の自動チェック方法について質問で... はると 08/9/7(日) 16:05 発言
【57656】Re:勤怠の自動チェック方法について質問で... かみちゃん 08/9/7(日) 16:12 発言
【57664】Re:勤怠の自動チェック方法について質問で... こたつねこ 08/9/7(日) 22:38 発言
【57669】Re:勤怠の自動チェック方法について質問で... はると 08/9/8(月) 13:02 お礼

24474 / 76737 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free