Option Explicit On Imports System.IO Imports Microsoft.Office.Interop.Excel.Constants Imports Microsoft.Office.Interop.Excel.XlBordersIndex Imports Microsoft.Office.Interop.Excel.XlLineStyle Imports Microsoft.Office.Interop.Excel.XlBorderWeight Imports Microsoft.Office.Interop.Excel.XlThemeColor Imports Microsoft.Office.Interop.Excel.XlWindowState Imports Microsoft.Office.Interop.Excel Public Class 考勤明細表 Dim xlApp As Application Dim xlBook As Workbook Dim xlSheet As Worksheet Dim 暫時不開 As Boolean Dim 時段(6), 計算(6), X1 As String Dim 間隔1, 時長, 總時, VBN, CBN As Integer Dim RI As Integer = -1 Dim SK As String = "要查找的 KEY" Dim Str As String = System.Windows.Forms.Application.StartupPath DIM 對話框(40) As String Private Sub Set_萬年曆() Dim ds1 As New DataSet 萬年曆_dgv.DataSource = Nothing : ds1.Clear() 萬年曆_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 萬年曆_dgv.ColumnHeadersHeight = 25 : 萬年曆_dgv.AllowUserToAddRows = False : 萬年曆_dgv.RowTemplate.Height = 25 SQL_萬年曆() da.Fill(ds1) : 萬年曆_dgv.DataSource = ds1.Tables(0) : conn.Close() 萬年曆_dgv.Columns(0).Visible = False : 萬年曆_dgv.Columns(表頭(18)).FillWeight = 70 萬年曆_dgv.Columns(1).ReadOnly = True : 萬年曆_dgv.Columns(2).ReadOnly = True For i As Integer = 0 To 萬年曆_dgv.Rows.Count - 1 If IsDBNull(萬年曆_dgv.Rows(i).Cells(表頭(18)).Value) Then : 萬年曆_dgv.Rows(i).Cells(表頭(18)).Value = False : End If If 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期一" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(0) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期二" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(1) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期三" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(2) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期四" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(3) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期五" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(4) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期六" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(5) ElseIf 萬年曆_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" Then : 萬年曆_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(6) End If '-------------清單介面優化------------------------------------ If 深色風格 = False Then If 萬年曆_dgv.Rows(i).Cells(0).Value.ToString = "星期六" Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 萬年曆_dgv.Rows(i).Cells(0).Value.ToString = "星期日" Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink : End If If 萬年曆_dgv.Rows(i).Cells(表頭(18)).Value = True Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink : End If Else If 萬年曆_dgv.Rows(i).Cells(0).Value.ToString = "星期六" Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 萬年曆_dgv.Rows(i).Cells(0).Value.ToString = "星期日" Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed : End If If 萬年曆_dgv.Rows(i).Cells(表頭(18)).Value = True Then : 萬年曆_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed : End If End If Next End Sub Private Sub Set_查詢表() Dim ds1 As New DataSet 查詢表_dgv.DataSource = Nothing : ds1.Clear() 查詢表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 查詢表_dgv.ColumnHeadersHeight = 25 : 查詢表_dgv.AllowUserToAddRows = False : 查詢表_dgv.RowTemplate.Height = 25 PA15 = Strings.Format(日期1_dtp.Value, "yyyy/MM/dd") : PA25 = 部門1_cb.SelectedIndex : PA14 = 級別2_cb.Text : SQL_考勤查詢清單() : PA25 = "" da.Fill(ds1) : 查詢表_dgv.DataSource = ds1.Tables(0) : conn.Close() 查詢表_dgv.Columns(0).FillWeight = 180 : 查詢表_dgv.Columns(1).Visible = False : 查詢表_dgv.Columns(2).Visible = False : 查詢表_dgv.Columns(表頭(17)).FillWeight = 50 查詢表_dgv.Columns(表頭(1)).FillWeight = 50 : 查詢表_dgv.Columns(表頭(18)).FillWeight = 50 : 查詢表_dgv.Columns(表頭(26)).FillWeight = 85 查詢表_dgv.Columns(表頭(19)).FillWeight = 160 For I As Integer = 4 To 16 : 查詢表_dgv.Columns(表頭(I)).FillWeight = 70 : Next 查詢表_dgv.Columns("第一").Visible = False : 查詢表_dgv.Columns("第二").Visible = False : 查詢表_dgv.Columns("第三").Visible = False 查詢表_dgv.Columns("第四").Visible = False : 查詢表_dgv.Columns("第五").Visible = False : 查詢表_dgv.Columns("第六").Visible = False 查詢表_dgv.Columns("假別編號").Visible = False 查詢表_dgv.Columns(表頭(18)).ReadOnly = True 資料規格1() : 總時 = 0 For I As Integer = 4 To 9 : 查詢表_dgv.Columns(表頭(I)).Visible = True : Next : For I As Integer = 10 To 15 : 查詢表_dgv.Columns(表頭(I)).Visible = False : Next : 總時 = 0 For i As Integer = 0 To 查詢表_dgv.Rows.Count - 1 Dim 驗證 As String = "" : Dim 取變數 As String 取變數 = 查詢表_dgv.Rows(i).Cells(表頭(19)).Value.ToString : NN1 = 0 For ii As Integer = 1 To 20 If ii = 1 Then : 驗證 = Strings.Left(取變數, ii) : NN1 += 1 : Else If Strings.Mid(取變數, ii, 1) = " " Then : Exit For : Else : 驗證 &= Strings.Mid(取變數, ii, 1) : NN1 += 1 : End If End If Next If 系統語言 = "繁體中文" Then : 查詢表_dgv.Rows(i).Cells(表頭(19)).Value = 驗證 : Else If Strings.Left(查詢表_dgv.Rows(i).Cells(表頭(19)).Value.ToString, 2) = "0." Then : 查詢表_dgv.Rows(i).Cells(表頭(19)).Value = "0.NA" : Else 查詢表_dgv.Rows(i).Cells(表頭(19)).Value = Strings.Left(查詢表_dgv.Rows(i).Cells(表頭(19)).Value.ToString, 2) & Strings.Mid(查詢表_dgv.Rows(i).Cells(表頭(19)).Value.ToString, NN1 + 2, 100) End If End If '-------------基本資料準備------------------------------------ If 工人_ch.Checked = True Then : 查詢表_dgv.Rows(i).Cells(表頭(17)).Value = True Else : If IsDBNull(查詢表_dgv.Rows(i).Cells(表頭(17)).Value) Then : 查詢表_dgv.Rows(i).Cells(表頭(17)).Value = False : End If : End If If IsDBNull(查詢表_dgv.Rows(i).Cells(表頭(18)).Value) Then : 查詢表_dgv.Rows(i).Cells(表頭(18)).Value = False : End If If 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期一" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(0) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期二" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(1) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期三" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(2) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期四" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(3) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期五" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(4) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期六" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(5) ElseIf 查詢表_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" Then : 查詢表_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(6) End If Dim DFG(6) As String : Dim CV As Integer = 1 : For V As Integer = 0 To 6 : DFG(V) = "" : Next If 查詢表_dgv.Rows(i).Cells("第一").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第一").Value.ToString : CV += 1 : End If If 查詢表_dgv.Rows(i).Cells("第二").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第二").Value.ToString : CV += 1 : End If If 查詢表_dgv.Rows(i).Cells("第三").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第三").Value.ToString : CV += 1 : End If If 查詢表_dgv.Rows(i).Cells("第四").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第四").Value.ToString : CV += 1 : End If If 查詢表_dgv.Rows(i).Cells("第五").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第五").Value.ToString : CV += 1 : End If If 查詢表_dgv.Rows(i).Cells("第六").Value.ToString <> "" Then : DFG(CV) = 查詢表_dgv.Rows(i).Cells("第六").Value.ToString : CV += 1 : End If 時段(1) = DFG(1) : 時段(2) = DFG(2) 時段(3) = DFG(3) : 時段(4) = DFG(4) 時段(5) = DFG(5) : 時段(6) = DFG(6) For II As Integer = 4 To 16 : 查詢表_dgv.Rows(i).Cells(表頭(II)).Value = "" : Next If 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = "" ElseIf 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "1" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(9) ElseIf 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "2" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(10) ElseIf 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "3" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(11) ElseIf 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "4" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(12) ElseIf 查詢表_dgv.Rows(i).Cells("假別編號").Value.ToString = "5" Then : 查詢表_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(13) End If '-------------時間推移計算------------------------------------ If 時段(1) = "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then ElseIf 時段(1) <> "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(2) 'X1 = 時段(1) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = X1 : 時段(2) = X1 'X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 : 時段(3) = X1 'X1 = 時段(3) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = X1 : 時段(4) = X1 'X1 = 時段(4) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = X1 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 >= 325 And 間隔1 < 665 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(2) 'X1 = 時段(1) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = X1 : 時段(2) = X1 'X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 : 時段(3) = X1 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 < 325 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(1) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then '---------大於十小時 X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 <= 325 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 'X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 : 時段(3) = X1 'X1 = 時段(3) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = X1 : 時段(4) = X1 'X1 = 時段(4) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = X1 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 > 325 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 'X1 = 時段(1) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = X1 : 時段(2) = X1 'X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 : 時段(3) = X1 'X1 = 時段(3) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = X1 : 時段(4) = X1 'X1 = 時段(4) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = X1 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" End If ElseIf 間隔1 > 325 And 間隔1 < 665 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) 'X1 = 時段(1) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = X1 : 時段(2) = X1 'X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 : 時段(3) = X1 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 >= 325 Then X1 = 時段(2) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) X1 = 時段(2) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If Else X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(4) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(4) 'X1 = 時段(3) : Set_時段定點_加四小時() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = X1 : 時段(4) = X1 'X1 = 時段(4) : Set_時段定點_加一小時() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = X1 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" Else X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(4) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) X1 = 時段(5) : Set_時段定點_減一小時() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If Else X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) <> "" Then X1 = 時段(1) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) X1 = 時段(6) : Set_時段定點() : 查詢表_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 查詢表_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) End If '-------------時間彙總計算------------------------------------ 時長 = 0 If 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(12)).Value.ToString = "" And 查詢表_dgv.Rows(i).Cells(表頭(13)).Value.ToString = "" And 查詢表_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 查詢表_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : End If ElseIf 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 查詢表_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 查詢表_dgv.Rows(i).Cells(表頭(17)).Value = False Then 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If ElseIf 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(14)).Value.ToString <> "" And 查詢表_dgv.Rows(i).Cells(表頭(15)).Value.ToString <> "" Then 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 查詢表_dgv.Rows(i).Cells(表頭(14)).Value.ToString : 計算(1) = 查詢表_dgv.Rows(i).Cells(表頭(15)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 查詢表_dgv.Rows(i).Cells(表頭(17)).Value = False Then 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 查詢表_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If End If '-------------清單介面優化------------------------------------ If 深色風格 = False Then If 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue : End If Else If 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkGreen ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue : End If End If Next 查詢表_dgv.Columns(表頭(27)).FillWeight = 120 End Sub Private Sub Set_使用者清單() Dim ds1 As New DataSet 清單1_dgv.DataSource = Nothing : ds1.Clear() 清單1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 清單1_dgv.ColumnHeadersHeight = 25 : 清單1_dgv.AllowUserToAddRows = False : 清單1_dgv.RowTemplate.Height = 25 If 小間距1_ch.Checked = False And 中間距1_ch.Checked = False And 大間距1_ch.Checked = True Then : 清單1_dgv.RowTemplate.Height = 75 ElseIf 小間距1_ch.Checked = False And 中間距1_ch.Checked = True And 大間距1_ch.Checked = False Then : 清單1_dgv.RowTemplate.Height = 45 ElseIf 小間距1_ch.Checked = True And 中間距1_ch.Checked = False And 大間距1_ch.Checked = False Then : 清單1_dgv.RowTemplate.Height = 25 : End If PA25 = 地區_cb.SelectedIndex : SQL3 = "" : PA14 = 級別_cb.Text : SQL_考勤明細表清單() : PA25 = "" da.Fill(ds1) : 清單1_dgv.DataSource = ds1.Tables(0) : conn.Close() 清單1_dgv.Columns(0).FillWeight = 90 : 清單1_dgv.Columns(1).Visible = False : 清單1_dgv.Columns(2).Visible = False : 清單1_dgv.Columns(7).FillWeight = 20 清單1_dgv.Columns(4).Visible = False : 清單1_dgv.Columns(5).Visible = False : 清單1_dgv.Columns(6).Visible = False : 清單1_dgv.Columns(3).Visible = False 清單1_dgv.Columns(8).Visible = False : 清單1_dgv.Columns(9).Visible = False 清單1_dgv.Columns(0).ReadOnly = True : 清單1_dgv.Columns(3).ReadOnly = True For i As Integer = 0 To 清單1_dgv.Rows.Count - 1 If 深色風格 = False Then If 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue : End If Else If 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkGreen ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue : End If End If Next 明細_dgv.DataSource = Nothing End Sub Private Sub Set_考勤彙總() Dim ds1 As New DataSet 考勤彙總_dgv.DataSource = Nothing : ds1.Clear() 考勤彙總_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 考勤彙總_dgv.ColumnHeadersHeight = 25 : 考勤彙總_dgv.AllowUserToAddRows = False : 考勤彙總_dgv.RowTemplate.Height = 25 If 小間距1_ch.Checked = False And 中間距1_ch.Checked = False And 大間距1_ch.Checked = True Then : 考勤彙總_dgv.RowTemplate.Height = 75 ElseIf 小間距1_ch.Checked = False And 中間距1_ch.Checked = True And 大間距1_ch.Checked = False Then : 考勤彙總_dgv.RowTemplate.Height = 45 ElseIf 小間距1_ch.Checked = True And 中間距1_ch.Checked = False And 大間距1_ch.Checked = False Then : 考勤彙總_dgv.RowTemplate.Height = 25 : End If PA25 = 地區1_cb.SelectedIndex : PA14 = 級別1_cb.Text : SQL_考勤明細表清單() : PA25 = "" da.Fill(ds1) : 考勤彙總_dgv.DataSource = ds1.Tables(0) : conn.Close() 考勤彙總_dgv.Columns(0).FillWeight = 120 : 考勤彙總_dgv.Columns(7).FillWeight = 30 : 考勤彙總_dgv.Columns(表頭(20)).FillWeight = 50 考勤彙總_dgv.Columns(表頭(21)).FillWeight = 50 : 考勤彙總_dgv.Columns(表頭(22)).FillWeight = 50 考勤彙總_dgv.Columns("ID卡號").Visible = False : 考勤彙總_dgv.Columns(0).ReadOnly = True : 考勤彙總_dgv.Columns(3).ReadOnly = True 考勤彙總_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 考勤彙總_dgv.Columns(表頭(20)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 考勤彙總_dgv.Columns(表頭(21)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 考勤彙總_dgv.Columns(表頭(22)).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter Dim 上班天數, 總時間 As Integer For i As Integer = 0 To 考勤彙總_dgv.Rows.Count - 1 考勤彙總_dgv.Rows(i).Cells(表頭(20)).Value = "" : 考勤彙總_dgv.Rows(i).Cells(表頭(21)).Value = "" If 深色風格 = False Then If 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue : End If Else If 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkGreen ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue ElseIf 考勤彙總_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 考勤彙總_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue : End If End If Dim 驗證 As String = "" : Dim 取變數 As String 取變數 = 考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value.ToString : NN1 = 0 For ii As Integer = 1 To 20 If ii = 1 Then : 驗證 = Strings.Left(取變數, ii) : NN1 += 1 : Else If Strings.Mid(取變數, ii, 1) = " " Then : Exit For : Else : 驗證 &= Strings.Mid(取變數, ii, 1) : NN1 += 1 : End If End If Next If 系統語言 = "繁體中文" Then : 考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value = 驗證 : Else If Strings.Left(考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value.ToString, 2) = "0." Then : 考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value = "0.NA" : Else 考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value = Strings.Left(考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value.ToString, 2) & Strings.Mid(考勤彙總_dgv.Rows(i).Cells(表頭(19)).Value.ToString, NN1 + 2, 100) End If End If If 考勤彙總_dgv.Rows(i).Cells("ID卡號").Value.ToString <> "" Then 上班天數 = 0 : 總時間 = 0 For II As Integer = 0 To 總清單_dgv.Rows.Count - 1 If 考勤彙總_dgv.Rows(i).Cells("ID卡號").Value.ToString = 總清單_dgv.Rows(II).Cells("ID卡號").Value.ToString Then If 總清單_dgv.Rows(II).Cells(表頭(16)).Value.ToString <> "" And Strings.Left(總清單_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2) <> "00" Then 上班天數 += 1 總時間 += CInt(Strings.Left(總清單_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2)) End If End If Next 考勤彙總_dgv.Rows(i).Cells(表頭(20)).Value = 上班天數 If 總時間 < 10 Then : 考勤彙總_dgv.Rows(i).Cells(表頭(21)).Value = "0" & 總時間 & " H 00 M" : Else : 考勤彙總_dgv.Rows(i).Cells(表頭(21)).Value = 總時間 & " H 00 M" : End If End If Next End Sub Private Sub Set_總清單() Dim ds1 As New DataSet 總清單_dgv.DataSource = Nothing : ds1.Clear() 總清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 總清單_dgv.ColumnHeadersHeight = 25 : 總清單_dgv.AllowUserToAddRows = False : 總清單_dgv.RowTemplate.Height = 25 PA25 = 地區_cb.SelectedIndex : SQL_考勤總明細() : PA25 = "" da.Fill(ds1) : 總清單_dgv.DataSource = ds1.Tables(0) : conn.Close() 總清單_dgv.Columns(表頭(17)).FillWeight = 70 : 總清單_dgv.Columns(表頭(18)).FillWeight = 70 總清單_dgv.Columns("第一").Visible = False : 總清單_dgv.Columns("第二").Visible = False : 總清單_dgv.Columns("第三").Visible = False 總清單_dgv.Columns("第四").Visible = False : 總清單_dgv.Columns("第五").Visible = False : 總清單_dgv.Columns("第六").Visible = False For I As Integer = 4 To 9 : 總清單_dgv.Columns(表頭(I)).Visible = False : Next : For I As Integer = 10 To 15 : 總清單_dgv.Columns(表頭(I)).Visible = True : Next : 總時 = 0 For i As Integer = 0 To 總清單_dgv.Rows.Count - 1 '-------------基本資料準備------------------------------------ If 工人_ch.Checked = True Then : 總清單_dgv.Rows(i).Cells(表頭(17)).Value = True Else : If IsDBNull(總清單_dgv.Rows(i).Cells(表頭(17)).Value) Then : 總清單_dgv.Rows(i).Cells(表頭(17)).Value = False : End If : End If If IsDBNull(總清單_dgv.Rows(i).Cells(表頭(18)).Value) Then : 總清單_dgv.Rows(i).Cells(表頭(18)).Value = False : End If If 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期一" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(0) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期二" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(1) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期三" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(2) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期四" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(3) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期五" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(4) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期六" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(5) ElseIf 總清單_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" Then : 總清單_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(6) End If Dim DFG(6) As String : Dim CV As Integer = 1 : For V As Integer = 0 To 6 : DFG(V) = "" : Next If 總清單_dgv.Rows(i).Cells("第一").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第一").Value.ToString : CV += 1 : End If If 總清單_dgv.Rows(i).Cells("第二").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第二").Value.ToString : CV += 1 : End If If 總清單_dgv.Rows(i).Cells("第三").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第三").Value.ToString : CV += 1 : End If If 總清單_dgv.Rows(i).Cells("第四").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第四").Value.ToString : CV += 1 : End If If 總清單_dgv.Rows(i).Cells("第五").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第五").Value.ToString : CV += 1 : End If If 總清單_dgv.Rows(i).Cells("第六").Value.ToString <> "" Then : DFG(CV) = 總清單_dgv.Rows(i).Cells("第六").Value.ToString : CV += 1 : End If 時段(1) = DFG(1) : 時段(2) = DFG(2) 時段(3) = DFG(3) : 時段(4) = DFG(4) 時段(5) = DFG(5) : 時段(6) = DFG(6) For II As Integer = 4 To 16 : 總清單_dgv.Rows(i).Cells(表頭(II)).Value = "" : Next '-------------時間推移計算------------------------------------ If 時段(1) = "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then ElseIf 時段(1) <> "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(2) 總清單_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 總清單_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 總清單_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 總清單_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 >= 325 And 間隔1 < 665 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(2) 總清單_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 總清單_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 < 325 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(1) : Set_時段定點_加四小時() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then '---------大於十小時 X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 <= 325 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 總清單_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 總清單_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 總清單_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 > 325 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 總清單_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 總清單_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 總清單_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 總清單_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" End If ElseIf 間隔1 > 325 And 間隔1 < 625 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) 總清單_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 總清單_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 >= 325 Then X1 = 時段(2) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) X1 = 時段(2) : Set_時段定點_加一小時() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If Else X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(4) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(4) 總清單_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 總清單_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" Else X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(4) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) X1 = 時段(5) : Set_時段定點_減一小時() : 總清單_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If Else X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) <> "" Then X1 = 時段(1) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) X1 = 時段(6) : Set_時段定點() : 總清單_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 總清單_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) End If '-------------時間彙總計算------------------------------------ 時長 = 0 If 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(12)).Value.ToString = "" And 總清單_dgv.Rows(i).Cells(表頭(13)).Value.ToString = "" And 總清單_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 總清單_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : End If ElseIf 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 總清單_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 總清單_dgv.Rows(i).Cells(表頭(17)).Value = False Then 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If ElseIf 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(14)).Value.ToString <> "" And 總清單_dgv.Rows(i).Cells(表頭(15)).Value.ToString <> "" Then 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 總清單_dgv.Rows(i).Cells(表頭(14)).Value.ToString : 計算(1) = 總清單_dgv.Rows(i).Cells(表頭(15)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 總清單_dgv.Rows(i).Cells(表頭(17)).Value = False Then 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 總清單_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If End If Next Set_考勤彙總() End Sub Private Sub Set_考勤明細() Dim ds1 As New DataSet 明細_dgv.DataSource = Nothing : ds1.Clear() 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_dgv.ColumnHeadersHeight = 25 : 明細_dgv.AllowUserToAddRows = False : 明細_dgv.RowTemplate.Height = 25 If 小間距1_ch.Checked = False And 中間距1_ch.Checked = False And 大間距1_ch.Checked = True Then : 明細_dgv.RowTemplate.Height = 75 ElseIf 小間距1_ch.Checked = False And 中間距1_ch.Checked = True And 大間距1_ch.Checked = False Then : 明細_dgv.RowTemplate.Height = 45 ElseIf 小間距1_ch.Checked = True And 中間距1_ch.Checked = False And 大間距1_ch.Checked = False Then : 明細_dgv.RowTemplate.Height = 25 : End If SQL_考勤明細() da.Fill(ds1) : 明細_dgv.DataSource = ds1.Tables(0) : conn.Close() 明細_dgv.Columns(0).Visible = False : 明細_dgv.Columns(1).FillWeight = 60 : 明細_dgv.Columns(2).FillWeight = 80 : 明細_dgv.Columns(表頭(17)).FillWeight = 50 明細_dgv.Columns(表頭(18)).FillWeight = 50 : 明細_dgv.Columns(表頭(26)).FillWeight = 85 For I As Integer = 4 To 16 : 明細_dgv.Columns(表頭(I)).FillWeight = 70 : Next 明細_dgv.Columns("第一").Visible = False : 明細_dgv.Columns("第二").Visible = False : 明細_dgv.Columns("第三").Visible = False 明細_dgv.Columns("第四").Visible = False : 明細_dgv.Columns("第五").Visible = False : 明細_dgv.Columns("第六").Visible = False 明細_dgv.Columns("假別編號").Visible = False 明細_dgv.Columns(表頭(18)).ReadOnly = True 資料規格() : 總時 = 0 : 總時數_tb.Text = "" For i As Integer = 0 To 明細_dgv.Rows.Count - 1 '-------------基本資料準備------------------------------------ If 工人_ch.Checked = True Then : 明細_dgv.Rows(i).Cells(表頭(17)).Value = True Else : If IsDBNull(明細_dgv.Rows(i).Cells(表頭(17)).Value) Then : 明細_dgv.Rows(i).Cells(表頭(17)).Value = False : End If : End If If IsDBNull(明細_dgv.Rows(i).Cells(表頭(18)).Value) Then : 明細_dgv.Rows(i).Cells(表頭(18)).Value = False : End If If 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期一" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(0) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期二" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(1) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期三" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(2) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期四" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(3) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期五" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(4) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期六" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(5) ElseIf 明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" Then : 明細_dgv.Rows(i).Cells(表頭(2)).Value = 對話框(6) End If Dim DFG(6) As String : Dim CV As Integer = 1 : For V As Integer = 0 To 6 : DFG(V) = "" : Next If 明細_dgv.Rows(i).Cells("第一").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第一").Value.ToString : CV += 1 : End If If 明細_dgv.Rows(i).Cells("第二").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第二").Value.ToString : CV += 1 : End If If 明細_dgv.Rows(i).Cells("第三").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第三").Value.ToString : CV += 1 : End If If 明細_dgv.Rows(i).Cells("第四").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第四").Value.ToString : CV += 1 : End If If 明細_dgv.Rows(i).Cells("第五").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第五").Value.ToString : CV += 1 : End If If 明細_dgv.Rows(i).Cells("第六").Value.ToString <> "" Then : DFG(CV) = 明細_dgv.Rows(i).Cells("第六").Value.ToString : CV += 1 : End If 時段(1) = DFG(1) : 時段(2) = DFG(2) 時段(3) = DFG(3) : 時段(4) = DFG(4) 時段(5) = DFG(5) : 時段(6) = DFG(6) For II As Integer = 4 To 16 : 明細_dgv.Rows(i).Cells(表頭(II)).Value = "" : Next If 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = "" ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "1" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(9) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "2" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(10) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "3" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(11) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "4" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(12) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "5" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(13) End If '-------------時間推移計算------------------------------------ If 時段(1) = "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then ElseIf 時段(1) <> "" And 時段(2) = "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) = "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(2) 明細_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 明細_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 明細_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 明細_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 明細_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 明細_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 明細_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 明細_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 >= 325 And 間隔1 < 665 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(2) 明細_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 明細_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 明細_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 明細_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 < 325 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(1) : Set_時段定點_加四小時() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) = "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then '---------大於十小時 X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(2) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 <= 325 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 明細_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 明細_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 明細_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 明細_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 明細_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 明細_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" ElseIf 間隔1 > 325 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(3) 明細_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 明細_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 明細_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 明細_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" 明細_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 明細_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 明細_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 明細_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" End If ElseIf 間隔1 > 325 And 間隔1 < 625 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) 明細_dgv.Rows(i).Cells(表頭(11)).Value = "12:00:00" : 明細_dgv.Rows(i).Cells(表頭(5)).Value = "12:00:00" 明細_dgv.Rows(i).Cells(表頭(12)).Value = "13:00:00" : 明細_dgv.Rows(i).Cells(表頭(6)).Value = "13:00:00" ElseIf 間隔1 >= 325 Then X1 = 時段(2) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(3) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(3) X1 = 時段(2) : Set_時段定點_加一小時() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If Else X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) = "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(4) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(4) 明細_dgv.Rows(i).Cells(表頭(13)).Value = "17:00:00" : 明細_dgv.Rows(i).Cells(表頭(7)).Value = "17:00:00" 明細_dgv.Rows(i).Cells(表頭(14)).Value = "18:00:00" : 明細_dgv.Rows(i).Cells(表頭(8)).Value = "18:00:00" Else X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) = "" Then X1 = 時段(1) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 665 Then X1 = 時段(4) : Set_時段定點() : 計算(0) = X1 : X1 = 時段(5) : Set_時段定點() : 計算(1) = X1 : 時間比對() If 間隔1 >= 90 Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) X1 = 時段(5) : Set_時段定點_減一小時() : 明細_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = X1 Else X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If Else X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) End If ElseIf 時段(1) <> "" And 時段(2) <> "" And 時段(3) <> "" And 時段(4) <> "" And 時段(5) <> "" And 時段(6) <> "" Then X1 = 時段(1) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(10)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(4)).Value = 時段(1) X1 = 時段(2) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(11)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(5)).Value = 時段(2) X1 = 時段(3) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(12)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(6)).Value = 時段(3) X1 = 時段(4) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(13)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(7)).Value = 時段(4) X1 = 時段(5) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(14)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(8)).Value = 時段(5) X1 = 時段(6) : Set_時段定點() : 明細_dgv.Rows(i).Cells(表頭(15)).Value = X1 : 明細_dgv.Rows(i).Cells(表頭(9)).Value = 時段(6) End If '-------------時間彙總計算------------------------------------ 時長 = 0 If (明細_dgv.Rows(i).Cells(表頭(17)).Value = False And 明細_dgv.Rows(i).Cells(表頭(18)).Value = True) Or (明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(i).Cells(表頭(17)).Value = False) Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "00 H 00 M" Else If 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : End If ElseIf 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 明細_dgv.Rows(i).Cells(表頭(17)).Value = False Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 明細_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If ElseIf 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString <> "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 明細_dgv.Rows(i).Cells(表頭(17)).Value = False Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 明細_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If End If If 明細_dgv.Rows(i).Cells(表頭(16)).Value.ToString <> "" Then 總時 += CInt(Strings.Left(明細_dgv.Rows(i).Cells(表頭(16)).Value.ToString, 2)) If 總時 < 10 Then : 總時數_tb.Text = "0" & 總時 & " H 00 M" : Else : 總時數_tb.Text = 總時 & " H 00 M" : End If End If End If '-------------清單介面優化------------------------------------ If 深色風格 = False Then If 明細_dgv.Rows(i).Cells(0).Value.ToString = "星期六" Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 明細_dgv.Rows(i).Cells(0).Value.ToString = "星期日" Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink : End If If 明細_dgv.Rows(i).Cells(表頭(18)).Value = True Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink : End If Else If 明細_dgv.Rows(i).Cells(0).Value.ToString = "星期六" Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 明細_dgv.Rows(i).Cells(0).Value.ToString = "星期日" Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed : End If If 明細_dgv.Rows(i).Cells(表頭(18)).Value = True Then : 明細_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed : End If End If Next : 明細_dgv.Columns(表頭(27)).FillWeight = 120 : 明細_dgv.Columns("C_No").FillWeight = 50 'Set_明細_dgv_下拉式清單1() : End Sub Private Sub Set_明細_dgv_下拉式清單1() Dim Col As New DataGridViewComboBoxColumn With { .FillWeight = 40, .DataPropertyName = "假別編號" } Col.Items.Clear() Col.Items.Add("") : Col.Items.Add("1") : Col.Items.Add("2") : Col.Items.Add("3") : Col.Items.Add("4") : Col.Items.Add("5") Col.HeaderText = "C_No" : Col.Name = "C_No" 明細_dgv.Columns.Insert(27, Col) End Sub Private Sub 資料規格() If 實際打卡_cb.Checked = True Then For I As Integer = 4 To 9 : 明細_dgv.Columns(表頭(I)).Visible = True : Next : For I As Integer = 10 To 15 : 明細_dgv.Columns(表頭(I)).Visible = False : Next Else For I As Integer = 4 To 9 : 明細_dgv.Columns(表頭(I)).Visible = False : Next : For I As Integer = 10 To 15 : 明細_dgv.Columns(表頭(I)).Visible = True : Next End If End Sub Private Sub 資料規格1() If 實際打卡_cb.Checked = True Then For I As Integer = 4 To 9 : 查詢表_dgv.Columns(表頭(I)).Visible = True : Next : For I As Integer = 10 To 15 : 查詢表_dgv.Columns(表頭(I)).Visible = False : Next Else For I As Integer = 4 To 9 : 查詢表_dgv.Columns(表頭(I)).Visible = False : Next : For I As Integer = 10 To 15 : 查詢表_dgv.Columns(表頭(I)).Visible = True : Next End If End Sub Private Sub 時間比對() Dim dateA As Date = Date.ParseExact("[" & 計算(0) & "]", "[HH:mm:ss]", Nothing) Dim dateB As Date = Date.ParseExact("[" & 計算(1) & "]", "[HH:mm:ss]", Nothing) Dim hoursDiff As Integer = DateDiff(DateInterval.Minute, dateA, dateB) 間隔1 = Math.Abs(hoursDiff) End Sub Private Sub Set_時段定點() Dim 時 As String = Strings.Left(X1, 2) : Dim 分 As String = Strings.Mid(X1, 4, 2) If (時 = "23" And CInt(分) >= 30) Or (時 = "00" And CInt(分) < 0) Then : X1 = "23:59:59" : ElseIf (時 = "00" And CInt(分) >= 30) Or (時 = "01" And CInt(分) < 30) Then : X1 = "01:00:00" ElseIf (時 = "01" And CInt(分) >= 30) Or (時 = "02" And CInt(分) < 30) Then : X1 = "02:00:00" : ElseIf (時 = "02" And CInt(分) >= 30) Or (時 = "03" And CInt(分) < 30) Then : X1 = "03:00:00" ElseIf (時 = "03" And CInt(分) >= 30) Or (時 = "04" And CInt(分) < 30) Then : X1 = "04:00:00" : ElseIf (時 = "04" And CInt(分) >= 30) Or (時 = "05" And CInt(分) < 30) Then : X1 = "05:00:00" ElseIf (時 = "05" And CInt(分) >= 30) Or (時 = "06" And CInt(分) < 30) Then : X1 = "06:00:00" : ElseIf (時 = "06" And CInt(分) >= 30) Or (時 = "07" And CInt(分) < 30) Then : X1 = "07:00:00" ElseIf (時 = "07" And CInt(分) >= 30) Or (時 = "08" And CInt(分) < 30) Then : X1 = "08:00:00" : ElseIf (時 = "08" And CInt(分) >= 30) Or (時 = "09" And CInt(分) < 30) Then : X1 = "09:00:00" ElseIf (時 = "09" And CInt(分) >= 30) Or (時 = "10" And CInt(分) < 30) Then : X1 = "10:00:00" : ElseIf (時 = "10" And CInt(分) >= 30) Or (時 = "11" And CInt(分) < 30) Then : X1 = "11:00:00" ElseIf (時 = "11" And CInt(分) >= 30) Or (時 = "12" And CInt(分) < 30) Then : X1 = "12:00:00" : ElseIf (時 = "12" And CInt(分) >= 30) Or (時 = "13" And CInt(分) < 30) Then : X1 = "13:00:00" ElseIf (時 = "13" And CInt(分) >= 30) Or (時 = "14" And CInt(分) < 30) Then : X1 = "14:00:00" : ElseIf (時 = "14" And CInt(分) >= 30) Or (時 = "15" And CInt(分) < 30) Then : X1 = "15:00:00" ElseIf (時 = "15" And CInt(分) >= 30) Or (時 = "16" And CInt(分) < 30) Then : X1 = "16:00:00" : ElseIf (時 = "16" And CInt(分) >= 30) Or (時 = "17" And CInt(分) < 30) Then : X1 = "17:00:00" ElseIf (時 = "17" And CInt(分) >= 30) Or (時 = "18" And CInt(分) < 30) Then : X1 = "18:00:00" : ElseIf (時 = "18" And CInt(分) >= 30) Or (時 = "19" And CInt(分) < 30) Then : X1 = "19:00:00" ElseIf (時 = "19" And CInt(分) >= 30) Or (時 = "20" And CInt(分) < 30) Then : X1 = "20:00:00" : ElseIf (時 = "20" And CInt(分) >= 30) Or (時 = "21" And CInt(分) < 30) Then : X1 = "21:00:00" ElseIf (時 = "21" And CInt(分) >= 30) Or (時 = "22" And CInt(分) < 30) Then : X1 = "22:00:00" : ElseIf (時 = "22" And CInt(分) >= 30) Or (時 = "23" And CInt(分) < 30) Then : X1 = "23:00:00" End If End Sub Private Sub Set_時段定點_減一小時() Dim 時 As String = Strings.Left(X1, 2) : Dim 分 As String = Strings.Mid(X1, 4, 2) If (時 = "23" And CInt(分) >= 30) Or (時 = "00" And CInt(分) < 30) Then : X1 = "23:00:00" : ElseIf (時 = "00" And CInt(分) >= 30) Or (時 = "01" And CInt(分) < 30) Then : X1 = "00:00:00" ElseIf (時 = "01" And CInt(分) >= 30) Or (時 = "02" And CInt(分) < 30) Then : X1 = "01:00:00" : ElseIf (時 = "02" And CInt(分) >= 30) Or (時 = "03" And CInt(分) < 30) Then : X1 = "02:00:00" ElseIf (時 = "03" And CInt(分) >= 30) Or (時 = "04" And CInt(分) < 30) Then : X1 = "03:00:00" : ElseIf (時 = "04" And CInt(分) >= 30) Or (時 = "05" And CInt(分) < 30) Then : X1 = "04:00:00" ElseIf (時 = "05" And CInt(分) >= 30) Or (時 = "06" And CInt(分) < 30) Then : X1 = "05:00:00" : ElseIf (時 = "06" And CInt(分) >= 30) Or (時 = "07" And CInt(分) < 30) Then : X1 = "06:00:00" ElseIf (時 = "07" And CInt(分) >= 30) Or (時 = "08" And CInt(分) < 30) Then : X1 = "07:00:00" : ElseIf (時 = "08" And CInt(分) >= 30) Or (時 = "09" And CInt(分) < 30) Then : X1 = "08:00:00" ElseIf (時 = "09" And CInt(分) >= 30) Or (時 = "10" And CInt(分) < 30) Then : X1 = "09:00:00" : ElseIf (時 = "10" And CInt(分) >= 30) Or (時 = "11" And CInt(分) < 30) Then : X1 = "10:00:00" ElseIf (時 = "11" And CInt(分) >= 30) Or (時 = "12" And CInt(分) < 30) Then : X1 = "11:00:00" : ElseIf (時 = "12" And CInt(分) >= 30) Or (時 = "13" And CInt(分) < 30) Then : X1 = "12:00:00" ElseIf (時 = "13" And CInt(分) >= 30) Or (時 = "14" And CInt(分) < 30) Then : X1 = "13:00:00" : ElseIf (時 = "14" And CInt(分) >= 30) Or (時 = "15" And CInt(分) < 30) Then : X1 = "14:00:00" ElseIf (時 = "15" And CInt(分) >= 30) Or (時 = "16" And CInt(分) < 30) Then : X1 = "15:00:00" : ElseIf (時 = "16" And CInt(分) >= 30) Or (時 = "17" And CInt(分) < 30) Then : X1 = "16:00:00" ElseIf (時 = "17" And CInt(分) >= 30) Or (時 = "18" And CInt(分) < 30) Then : X1 = "17:00:00" : ElseIf (時 = "18" And CInt(分) >= 30) Or (時 = "19" And CInt(分) < 30) Then : X1 = "18:00:00" ElseIf (時 = "19" And CInt(分) >= 30) Or (時 = "20" And CInt(分) < 30) Then : X1 = "19:00:00" : ElseIf (時 = "20" And CInt(分) >= 30) Or (時 = "21" And CInt(分) < 30) Then : X1 = "20:00:00" ElseIf (時 = "21" And CInt(分) >= 30) Or (時 = "22" And CInt(分) < 30) Then : X1 = "21:00:00" : ElseIf (時 = "22" And CInt(分) >= 30) Or (時 = "23" And CInt(分) < 30) Then : X1 = "22:00:00" End If End Sub Private Sub Set_時段定點_加一小時() Dim 時 As String = Strings.Left(X1, 2) : Dim 分 As String = Strings.Mid(X1, 4, 2) If (時 = "23" And CInt(分) >= 30) Or (時 = "00" And CInt(分) < 30) Then : X1 = "01:00:00" : ElseIf (時 = "00" And CInt(分) >= 30) Or (時 = "01" And CInt(分) < 30) Then : X1 = "02:00:00" ElseIf (時 = "01" And CInt(分) >= 30) Or (時 = "02" And CInt(分) < 30) Then : X1 = "03:00:00" : ElseIf (時 = "02" And CInt(分) >= 30) Or (時 = "03" And CInt(分) < 30) Then : X1 = "04:00:00" ElseIf (時 = "03" And CInt(分) >= 30) Or (時 = "04" And CInt(分) < 30) Then : X1 = "05:00:00" : ElseIf (時 = "04" And CInt(分) >= 30) Or (時 = "05" And CInt(分) < 30) Then : X1 = "06:00:00" ElseIf (時 = "05" And CInt(分) >= 30) Or (時 = "06" And CInt(分) < 30) Then : X1 = "07:00:00" : ElseIf (時 = "06" And CInt(分) >= 30) Or (時 = "07" And CInt(分) < 30) Then : X1 = "08:00:00" ElseIf (時 = "07" And CInt(分) >= 30) Or (時 = "08" And CInt(分) < 30) Then : X1 = "09:00:00" : ElseIf (時 = "08" And CInt(分) >= 30) Or (時 = "09" And CInt(分) < 30) Then : X1 = "10:00:00" ElseIf (時 = "09" And CInt(分) >= 30) Or (時 = "10" And CInt(分) < 30) Then : X1 = "11:00:00" : ElseIf (時 = "10" And CInt(分) >= 30) Or (時 = "11" And CInt(分) < 30) Then : X1 = "12:00:00" ElseIf (時 = "11" And CInt(分) >= 30) Or (時 = "12" And CInt(分) < 30) Then : X1 = "13:00:00" : ElseIf (時 = "12" And CInt(分) >= 30) Or (時 = "13" And CInt(分) < 30) Then : X1 = "14:00:00" ElseIf (時 = "13" And CInt(分) >= 30) Or (時 = "14" And CInt(分) < 30) Then : X1 = "15:00:00" : ElseIf (時 = "14" And CInt(分) >= 30) Or (時 = "15" And CInt(分) < 30) Then : X1 = "16:00:00" ElseIf (時 = "15" And CInt(分) >= 30) Or (時 = "16" And CInt(分) < 30) Then : X1 = "17:00:00" : ElseIf (時 = "16" And CInt(分) >= 30) Or (時 = "17" And CInt(分) < 30) Then : X1 = "18:00:00" ElseIf (時 = "17" And CInt(分) >= 30) Or (時 = "18" And CInt(分) < 30) Then : X1 = "19:00:00" : ElseIf (時 = "18" And CInt(分) >= 30) Or (時 = "19" And CInt(分) < 30) Then : X1 = "20:00:00" ElseIf (時 = "19" And CInt(分) >= 30) Or (時 = "20" And CInt(分) < 30) Then : X1 = "21:00:00" : ElseIf (時 = "20" And CInt(分) >= 30) Or (時 = "21" And CInt(分) < 30) Then : X1 = "22:00:00" ElseIf (時 = "21" And CInt(分) >= 30) Or (時 = "22" And CInt(分) < 30) Then : X1 = "23:00:00" : ElseIf (時 = "22" And CInt(分) >= 30) Or (時 = "23" And CInt(分) < 30) Then : X1 = "24:00:00" End If End Sub Private Sub Set_時段定點_加四小時() Dim 時 As String = Strings.Left(X1, 2) : Dim 分 As String = Strings.Mid(X1, 4, 2) If (時 = "23" And CInt(分) >= 30) Or (時 = "00" And CInt(分) < 30) Then : X1 = "04:00:00" : ElseIf (時 = "00" And CInt(分) >= 30) Or (時 = "01" And CInt(分) < 30) Then : X1 = "05:00:00" ElseIf (時 = "01" And CInt(分) >= 30) Or (時 = "02" And CInt(分) < 30) Then : X1 = "06:00:00" : ElseIf (時 = "02" And CInt(分) >= 30) Or (時 = "03" And CInt(分) < 30) Then : X1 = "07:00:00" ElseIf (時 = "03" And CInt(分) >= 30) Or (時 = "04" And CInt(分) < 30) Then : X1 = "08:00:00" : ElseIf (時 = "04" And CInt(分) >= 30) Or (時 = "05" And CInt(分) < 30) Then : X1 = "09:00:00" ElseIf (時 = "05" And CInt(分) >= 30) Or (時 = "06" And CInt(分) < 30) Then : X1 = "10:00:00" : ElseIf (時 = "06" And CInt(分) >= 30) Or (時 = "07" And CInt(分) < 30) Then : X1 = "11:00:00" ElseIf (時 = "07" And CInt(分) >= 30) Or (時 = "08" And CInt(分) < 30) Then : X1 = "12:00:00" : ElseIf (時 = "08" And CInt(分) >= 30) Or (時 = "09" And CInt(分) < 30) Then : X1 = "13:00:00" ElseIf (時 = "09" And CInt(分) >= 30) Or (時 = "10" And CInt(分) < 30) Then : X1 = "14:00:00" : ElseIf (時 = "10" And CInt(分) >= 30) Or (時 = "11" And CInt(分) < 30) Then : X1 = "15:00:00" ElseIf (時 = "11" And CInt(分) >= 30) Or (時 = "12" And CInt(分) < 30) Then : X1 = "16:00:00" : ElseIf (時 = "12" And CInt(分) >= 30) Or (時 = "13" And CInt(分) < 30) Then : X1 = "17:00:00" ElseIf (時 = "13" And CInt(分) >= 30) Or (時 = "14" And CInt(分) < 30) Then : X1 = "18:00:00" : ElseIf (時 = "14" And CInt(分) >= 30) Or (時 = "15" And CInt(分) < 30) Then : X1 = "19:00:00" ElseIf (時 = "15" And CInt(分) >= 30) Or (時 = "16" And CInt(分) < 30) Then : X1 = "20:00:00" : ElseIf (時 = "16" And CInt(分) >= 30) Or (時 = "17" And CInt(分) < 30) Then : X1 = "21:00:00" ElseIf (時 = "17" And CInt(分) >= 30) Or (時 = "18" And CInt(分) < 30) Then : X1 = "22:00:00" : ElseIf (時 = "18" And CInt(分) >= 30) Or (時 = "19" And CInt(分) < 30) Then : X1 = "23:00:00" ElseIf (時 = "19" And CInt(分) >= 30) Or (時 = "20" And CInt(分) < 30) Then : X1 = "00:00:00" : ElseIf (時 = "20" And CInt(分) >= 30) Or (時 = "21" And CInt(分) < 30) Then : X1 = "01:00:00" ElseIf (時 = "21" And CInt(分) >= 30) Or (時 = "22" And CInt(分) < 30) Then : X1 = "02:00:00" : ElseIf (時 = "22" And CInt(分) >= 30) Or (時 = "23" And CInt(分) < 30) Then : X1 = "03:00:00" End If End Sub Private Sub 語言轉換讀取() If 系統語言 = "繁體中文" Then : 語言 = "CH" : ElseIf 系統語言 = "English" Then : 語言 = "EN" : ElseIf 系統語言 = "Indonesian" Then : 語言 = "IN" : End If Me.Text = 系統語言字典("H001-270-" & 語言) : ToolTip1.ToolTipTitle = 系統語言字典("G000-108-" & 語言) : 實際打卡_cb.Text = 系統語言字典("H609-121-" & 語言) 在職_bt.Text = 系統語言字典("H607-108-" & 語言) : 離職_bt.Text = 系統語言字典("H002-116-" & 語言) : 考勤計算_cb.Text = 系統語言字典("H609-122-" & 語言) 考勤明細表_tp.Text = 系統語言字典("H001-270-" & 語言) : 考勤彙總表_tp.Text = 系統語言字典("H609-126-" & 語言) : Label56.Text = 系統語言字典("H609-127-" & 語言) 假日設定_bt.Text = 系統語言字典("H609-127-" & 語言) : 考勤查詢表_tp.Text = 系統語言字典("H609-140-" & 語言) : 單一列印_cb.Text = 系統語言字典("H609-143-" & 語言) 工人_ch.Text = 系統語言字典("G000-159-" & 語言) : Label12.Text = 系統語言字典("H609-111-" & 語言) : Label21.Text = 系統語言字典("H609-111-" & 語言) Label11.Text = 系統語言字典("H609-139-" & 語言) : Label24.Text = 系統語言字典("H609-139-" & 語言) : Label8.Text = 系統語言字典("H609-130-" & 語言) Label6.Text = 系統語言字典("H609-109-" & 語言) : Label23.Text = 系統語言字典("H609-109-" & 語言) : Label9.Text = 系統語言字典("H609-131-" & 語言) Label7.Text = 系統語言字典("H609-110-" & 語言) : Label22.Text = 系統語言字典("H609-110-" & 語言) : Label10.Text = 系統語言字典("H609-132-" & 語言) Label13.Text = 系統語言字典("H609-112-" & 語言) : Label20.Text = 系統語言字典("H609-112-" & 語言) : 表頭(21) = 系統語言字典("H609-125-" & 語言) Label14.Text = 系統語言字典("H609-113-" & 語言) : Label19.Text = 系統語言字典("H609-113-" & 語言) : Label1.Text = 系統語言字典("H609-125-" & 語言) Label15.Text = 系統語言字典("H609-114-" & 語言) : Label18.Text = 系統語言字典("H609-114-" & 語言) 表頭(0) = 系統語言字典("H601-103-" & 語言) : 表頭(1) = 系統語言字典("H602-104-" & 語言) : 表頭(2) = 系統語言字典("H609-107-" & 語言) : 表頭(3) = 系統語言字典("H609-108-" & 語言) 表頭(10) = 系統語言字典("H609-115-" & 語言) : 表頭(11) = 系統語言字典("H609-116-" & 語言) : 表頭(12) = 系統語言字典("H609-117-" & 語言) : 表頭(13) = 系統語言字典("H609-118-" & 語言) 表頭(14) = 系統語言字典("H609-119-" & 語言) : 表頭(15) = 系統語言字典("H609-120-" & 語言) : 表頭(16) = 系統語言字典("H609-123-" & 語言) : 表頭(17) = 系統語言字典("H609-124-" & 語言) 表頭(22) = 系統語言字典("H607-103-" & 語言) : 表頭(18) = 系統語言字典("H609-128-" & 語言) : 表頭(19) = 系統語言字典("H601-108-" & 語言) : 表頭(20) = 系統語言字典("H609-129-" & 語言) 表頭(4) = 系統語言字典("H609-109-" & 語言) : 表頭(26) = 系統語言字典("H609-138-" & 語言) : 表頭(27) = 系統語言字典("G000-155-" & 語言) : 表頭(8) = 系統語言字典("H609-113-" & 語言) 表頭(9) = 系統語言字典("H609-114-" & 語言) : 表頭(7) = 系統語言字典("H609-112-" & 語言) : 表頭(6) = 系統語言字典("H609-111-" & 語言) : 表頭(5) = 系統語言字典("H609-110-" & 語言) 表頭(25) = 系統語言字典("H609-132-" & 語言) : 表頭(24) = 系統語言字典("H609-131-" & 語言) : 表頭(23) = 系統語言字典("H609-130-" & 語言) 對話框(0) = 系統語言字典("H609-100-" & 語言) : 對話框(1) = 系統語言字典("H609-101-" & 語言) : 對話框(7) = 系統語言字典("G000-110-" & 語言) : 對話框(12) = 系統語言字典("H609-136-" & 語言) 對話框(2) = 系統語言字典("H609-102-" & 語言) : 對話框(3) = 系統語言字典("H609-103-" & 語言) : 對話框(8) = 系統語言字典("G000-119-" & 語言) : 對話框(13) = 系統語言字典("H609-137-" & 語言) 對話框(4) = 系統語言字典("H609-104-" & 語言) : 對話框(5) = 系統語言字典("H609-105-" & 語言) : 對話框(10) = 系統語言字典("H609-134-" & 語言) : 對話框(11) = 系統語言字典("H609-135-" & 語言) 對話框(14) = 系統語言字典("G000-158-" & 語言) : 對話框(16) = 系統語言字典("H609-141-" & 語言) : 對話框(17) = 系統語言字典("H609-142-" & 語言) : 對話框(18) = 系統語言字典("H204-134-" & 語言) 對話框(9) = 系統語言字典("H609-133-" & 語言) : 對話框(6) = 系統語言字典("H609-106-" & 語言) : 對話框(15) = 系統語言字典("H609-139-" & 語言) 請假編號_cb.Items.Clear() : 請假編號_cb.Items.Add("") : 請假編號_cb.Items.Add(對話框(9)) : 請假編號_cb.Items.Add(對話框(10)) 請假編號_cb.Items.Add(對話框(11)) : 請假編號_cb.Items.Add(對話框(12)) : 請假編號_cb.Items.Add(對話框(13)) End Sub Private Sub 考勤編輯_bt_MouseEnter(sender As Object, e As EventArgs) Handles 考勤編輯_bt.MouseEnter ToolTip1.SetToolTip(Me.考勤編輯_bt, 對話框(15)) End Sub Private Sub 考勤編輯1_bt_MouseEnter(sender As Object, e As EventArgs) Handles 考勤編輯1_bt.MouseEnter ToolTip1.SetToolTip(Me.考勤編輯1_bt, 對話框(15)) End Sub Private Sub 考勤調整_bt_MouseEnter(sender As Object, e As EventArgs) Handles 考勤調整_bt.MouseEnter ToolTip1.SetToolTip(Me.考勤調整_bt, 對話框(7)) End Sub Private Sub 考勤調整1_bt_MouseEnter(sender As Object, e As EventArgs) Handles 考勤調整1_bt.MouseEnter ToolTip1.SetToolTip(Me.考勤調整1_bt, 對話框(7)) End Sub Private Sub 存檔_bt_MouseEnter(sender As Object, e As EventArgs) Handles 存檔_bt.MouseEnter ToolTip1.SetToolTip(Me.存檔_bt, 對話框(7)) End Sub Private Sub 加班請假_bt_MouseEnter(sender As Object, e As EventArgs) Handles 加班請假_bt.MouseEnter ToolTip1.SetToolTip(Me.加班請假_bt, 對話框(7)) End Sub Private Sub 年分清單() SQL_年分清單() : 年份_cb.Items.Clear() : 年份1_cb.Items.Clear() : 年份2_cb.Items.Clear() While (dr.Read()) : 年份_cb.Items.Add(dr("日期")) : 年份1_cb.Items.Add(dr("日期")) : 年份2_cb.Items.Add(dr("日期")) : End While : conn.Close() End Sub Private Sub 級別清單() SQL_考勤級別讀取() : 級別_cb.Items.Clear() : 級別_cb.Items.Add("") : 級別1_cb.Items.Clear() : 級別1_cb.Items.Add("") : 級別2_cb.Items.Clear() : 級別2_cb.Items.Add("") While (dr.Read()) : 級別_cb.Items.Add(dr("級別")) : 級別1_cb.Items.Add(dr("級別")) : 級別2_cb.Items.Add(dr("級別")) : End While : conn.Close() End Sub Private Sub 地區清單() 地區_cb.Items.Clear() : 地區_cb.Items.Add("") : 地區_cb.Items.Add(對話框(16)) : 地區_cb.Items.Add(對話框(17)) 地區1_cb.Items.Clear() : 地區1_cb.Items.Add("") : 地區1_cb.Items.Add(對話框(16)) : 地區1_cb.Items.Add(對話框(17)) 部門1_cb.Items.Clear() : 部門1_cb.Items.Add("") : 部門1_cb.Items.Add(對話框(16)) : 部門1_cb.Items.Add(對話框(17)) End Sub Private Sub 考勤明細表_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = HX_PGS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True 風格() : H(609) = True : 介面 = "H609" : 語言轉換讀取() : 顯示說明(999, True) 在職 = True : Panel1.SendToBack() : 實際打卡_cb.Checked = True : 視窗4_pl.Visible = False : 視窗3_pl.Visible = False : 視窗2_pl.Visible = False If CInt(登入人級別) <= 5 Then : 高級_cb.Checked = True : Else : 高級_cb.Checked = False : End If 計算分流.Enabled = True End Sub Private Sub 計算分流_Tick(sender As Object, e As EventArgs) Handles 計算分流.Tick 計算分流.Enabled = False 地區清單() : 級別清單() : Set_使用者清單() : 年分清單() : 暫時不開 = True 年份_cb.Text = Year(Today) : 月份_cb.SelectedIndex = Month(Today) - 1 : 年份1_cb.Text = Year(Today) : 月份1_cb.SelectedIndex = Month(Today) - 1 年份2_cb.Text = Year(Today) : 月份2_cb.SelectedIndex = Month(Today) - 1 : Set_考勤明細() : Set_總清單() If 清單1_dgv.Rows.Count > 0 Then PA1 = 清單1_dgv.Rows(0).Cells("ID卡號").Value.ToString : 姓名_tb.Text = 清單1_dgv.Rows(0).Cells(表頭(0)).Value.ToString.ToUpper 員工代碼_tb.Text = 清單1_dgv.Rows(0).Cells(表頭(23)).Value.ToString.ToUpper : 員工崗位_tb.Text = 清單1_dgv.Rows(0).Cells(表頭(24)).Value.ToString.ToUpper 部門名稱_tb.Text = 清單1_dgv.Rows(0).Cells(表頭(25)).Value.ToString.ToUpper ID_tb.Text = PA1 PA2 = 年份_cb.Text : PA3 = 月份_cb.Text : Set_考勤明細() End If : 首次開啟 = True End Sub Private Sub 語轉扭_bt_Click(sender As Object, e As EventArgs) Handles 語轉扭_bt.Click H(609) = True : 介面 = "H609" : 語言轉換讀取() 首次開啟 = False : 計算分流.Enabled = True End Sub Private Sub 考勤明細表_Closed(sender As Object, e As EventArgs) Handles MyBase.Closed H(607) = False : MyMod.虛擬桌面開啟() End Sub Private Sub 考勤明細表_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged MyMod.清單字體大小調整() 查詢表_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value) 考勤彙總_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value) 明細_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value) 清單1_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", HX_PGS_ERP_SYS.字體_NUD.Value) End Sub Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove timeNow = 0 : HX_PGS_ERP_SYS.Timer1.Enabled = False : HX_PGS_ERP_SYS.Timer1.Enabled = True End Sub Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress timeNow = 0 : HX_PGS_ERP_SYS.Timer1.Enabled = False : HX_PGS_ERP_SYS.Timer1.Enabled = True End Sub Private Sub 查詢表_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 查詢表_dgv.RowPostPaint Dim linePen As New Pen(Color.Blue, 2) If e.RowIndex = 查詢表_dgv.Rows.Count - 1 Then Exit Sub Else If 查詢表_dgv(表頭(19), e.RowIndex).Value.ToString <> 查詢表_dgv(表頭(19), e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(查詢表_dgv.RowHeadersVisible, 查詢表_dgv.RowHeadersWidth, 0) Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 查詢表_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 查詢表_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) Exit Sub End If End If For i As Integer = 0 To 查詢表_dgv.Rows.Count - 1 If 深色風格 = False Then If 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue : End If Else If 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkGreen ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue ElseIf 查詢表_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 查詢表_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue : End If End If Next End Sub Private Sub 清單1_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 清單1_dgv.RowPostPaint If 首次開啟 = True Then Dim linePen As New Pen(Color.Blue, 2) If e.RowIndex = 清單1_dgv.Rows.Count - 1 Then Exit Sub Else If 清單1_dgv(表頭(19), e.RowIndex).Value.ToString <> 清單1_dgv(表頭(19), e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(清單1_dgv.RowHeadersVisible, 清單1_dgv.RowHeadersWidth, 0) Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 清單1_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 清單1_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) Exit Sub End If End If For i As Integer = 0 To 清單1_dgv.Rows.Count - 1 If 深色風格 = False Then If 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGoldenrodYellow ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightGreen ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightPink ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.LightBlue : End If Else If 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "01" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.Purple ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "02" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkGreen ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "03" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkRed ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "04" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue ElseIf 清單1_dgv.Rows(i).Cells(表頭(1)).Value.ToString = "05" Then : 清單1_dgv.Rows(i).DefaultCellStyle.BackColor = Color.DarkBlue : End If End If Next End If End Sub Private Sub 清單1_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 清單1_dgv.CellClick If e.RowIndex = -1 Then : Else PA1 = 清單1_dgv.Rows(e.RowIndex).Cells("ID卡號").Value.ToString : 姓名_tb.Text = 清單1_dgv.Rows(e.RowIndex).Cells(表頭(0)).Value.ToString.ToUpper 員工代碼_tb.Text = 清單1_dgv.Rows(e.RowIndex).Cells(表頭(23)).Value.ToString.ToUpper : 員工崗位_tb.Text = 清單1_dgv.Rows(e.RowIndex).Cells(表頭(24)).Value.ToString.ToUpper 部門名稱_tb.Text = 清單1_dgv.Rows(e.RowIndex).Cells(表頭(25)).Value.ToString.ToUpper ID_tb.Text = PA1 PA2 = 年份_cb.Text : PA3 = 月份_cb.Text : Set_考勤明細() End If End Sub Private Sub 明細_dgv_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 明細_dgv.MouseUp 'If 明細_dgv.SelectedCells.Count = 1 Then : MsgBox(明細_dgv.SelectedCells(0).ColumnIndex & " " & 明細_dgv.SelectedCells(0).RowIndex) : End If If 明細_dgv.SelectedCells.Count > 0 Then If 明細_dgv.SelectedCells(0).ColumnIndex = 27 Then If 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "" Then : 請假編號_cb.Text = "" ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "1" Then : 請假編號_cb.Text = 對話框(9) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "2" Then : 請假編號_cb.Text = 對話框(10) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "3" Then : 請假編號_cb.Text = 對話框(11) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "4" Then : 請假編號_cb.Text = 對話框(12) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value.ToString = "5" Then : 請假編號_cb.Text = 對話框(13) : End If CB選擇清單(請假編號_cb, 請假編號_cb.Text) If 請假編號_cb.Text = "" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "" ElseIf 請假編號_cb.Text = 對話框(9) Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "1" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "1" ElseIf 請假編號_cb.Text = 對話框(10) Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "2" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "2" ElseIf 請假編號_cb.Text = 對話框(11) Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "3" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "3" ElseIf 請假編號_cb.Text = 對話框(12) Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "4" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "4" ElseIf 請假編號_cb.Text = 對話框(13) Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(26).Value = "5" : 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(27).Value = "5" End If If 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = "" ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "1" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = 對話框(9) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "2" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = 對話框(10) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "3" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = 對話框(11) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "4" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = 對話框(12) ElseIf 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells("假別編號").Value.ToString = "5" Then 明細_dgv.Rows(明細_dgv.SelectedCells(0).RowIndex).Cells(表頭(26)).Value = 對話框(13) End If End If End If End Sub Private Sub 明細_dgv_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles 明細_dgv.CellClick If e.RowIndex = -1 Then : Else 日期_tb.Text = 明細_dgv.Rows(e.RowIndex).Cells(表頭(3)).Value.ToString If 明細_dgv.Rows(e.RowIndex).Cells(表頭(4)).Value.ToString = "" Then : 時段1_rtp.Value = "08:00:00" : S1.Checked = False : 時段1_rtp.Enabled = True Else : 時段1_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(4)).Value.ToString : S1.Checked = True : 時段1_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段1_rtp.Enabled = False Then : 時段1_rtp.Enabled = True : End If If 明細_dgv.Rows(e.RowIndex).Cells(表頭(5)).Value.ToString = "" Then : 時段2_rtp.Value = "12:00:00" : S2.Checked = False : 時段2_rtp.Enabled = True Else : 時段2_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(5)).Value.ToString : S2.Checked = True : 時段2_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段2_rtp.Enabled = False Then : 時段2_rtp.Enabled = True : End If If 明細_dgv.Rows(e.RowIndex).Cells(表頭(6)).Value.ToString = "" Then : 時段3_rtp.Value = "13:00:00" : S3.Checked = False : 時段3_rtp.Enabled = True Else : 時段3_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(6)).Value.ToString : S3.Checked = True : 時段3_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段3_rtp.Enabled = False Then : 時段3_rtp.Enabled = True : End If If 明細_dgv.Rows(e.RowIndex).Cells(表頭(7)).Value.ToString = "" Then : 時段4_rtp.Value = "17:00:00" : S4.Checked = False : 時段4_rtp.Enabled = True Else : 時段4_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(7)).Value.ToString : S4.Checked = True : 時段4_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段4_rtp.Enabled = False Then : 時段4_rtp.Enabled = True : End If If 明細_dgv.Rows(e.RowIndex).Cells(表頭(8)).Value.ToString = "" Then : 時段5_rtp.Value = "18:00:00" : S5.Checked = False : 時段5_rtp.Enabled = True Else : 時段5_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(8)).Value.ToString : S5.Checked = True : 時段5_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段5_rtp.Enabled = False Then : 時段5_rtp.Enabled = True : End If If 明細_dgv.Rows(e.RowIndex).Cells(表頭(9)).Value.ToString = "" Then : 時段6_rtp.Value = "20:00:00" : S6.Checked = False : 時段6_rtp.Enabled = True Else : 時段6_rtp.Value = 明細_dgv.Rows(e.RowIndex).Cells(表頭(9)).Value.ToString : S6.Checked = True : 時段6_rtp.Enabled = False : End If If 高級_cb.Checked = True And 時段6_rtp.Enabled = False Then : 時段6_rtp.Enabled = True : End If 總時 = 0 : 總時數_tb.Text = "" For i As Integer = 0 To 明細_dgv.Rows.Count - 1 '-------------時間彙總計算------------------------------------ 時長 = 0 If (明細_dgv.Rows(i).Cells(表頭(17)).Value = False And 明細_dgv.Rows(i).Cells(表頭(18)).Value = True) Or (明細_dgv.Rows(i).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(i).Cells(表頭(17)).Value = False) Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "00 H 00 M" Else If 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : End If ElseIf 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString = "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString = "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 明細_dgv.Rows(i).Cells(表頭(17)).Value = False Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 明細_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If ElseIf 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString <> "" And 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString <> "" Then 計算(0) = 明細_dgv.Rows(i).Cells(表頭(10)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(11)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(12)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(13)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) 計算(0) = 明細_dgv.Rows(i).Cells(表頭(14)).Value.ToString : 計算(1) = 明細_dgv.Rows(i).Cells(表頭(15)).Value.ToString : 時間比對() : 時長 += (間隔1 / 60) If 時長 <= 8 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" : Else If 明細_dgv.Rows(i).Cells(表頭(17)).Value = False Then 明細_dgv.Rows(i).Cells(表頭(16)).Value = "08 H 00 M" Else If 時長 < 10 Then : 明細_dgv.Rows(i).Cells(表頭(16)).Value = "0" & 時長 & " H 00 M" Else : 明細_dgv.Rows(i).Cells(表頭(16)).Value = 時長 & " H 00 M" : End If End If End If End If End If If 明細_dgv.Rows(i).Cells(表頭(16)).Value.ToString <> "" Then 總時 += CInt(Strings.Left(明細_dgv.Rows(i).Cells(表頭(16)).Value.ToString, 2)) If 總時 < 10 Then : 總時數_tb.Text = "0" & 總時 & " H 00 M" : Else : 總時數_tb.Text = 總時 & " H 00 M" : End If End If If 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = "" ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "1" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(9) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "2" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(10) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "3" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(11) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "4" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(12) ElseIf 明細_dgv.Rows(i).Cells("假別編號").Value.ToString = "5" Then : 明細_dgv.Rows(i).Cells(表頭(26)).Value = 對話框(13) End If Next End If End Sub Private Sub 假日設定_bt_Click(sender As Object, e As EventArgs) Handles 假日設定_bt.Click If 視窗4_pl.Visible = False Then 暫時不開 = True PA2 = 年份1_cb.Text : PA3 = 月份1_cb.Text : Set_萬年曆() Dim XC As Integer = Me.Size.Width : Dim YC As Integer = Me.Size.Height Dim XD As Integer = 視窗4_pl.Width : Dim YD As Integer = 視窗4_pl.Height 視窗4_pl.Location = New System.Drawing.Point((XC - XD) / 2, (YC - YD) / 2) : 視窗4_pl.Visible = True : 視窗4_pl.BringToFront() 暫時不開 = False Else : 視窗4_pl.Visible = False : End If End Sub Private Sub 考勤編輯_bt_Click(sender As Object, e As EventArgs) Handles 考勤編輯_bt.Click Dim XC As Integer = Me.Size.Width : Dim YC As Integer = Me.Size.Height Dim XD As Integer = 視窗3_pl.Width : Dim YD As Integer = 視窗3_pl.Height If 視窗3_pl.Visible = False Then : 視窗3_pl.Location = New System.Drawing.Point((XC - XD) / 2, (YC - YD) / 2) : 視窗3_pl.Visible = True : 視窗3_pl.BringToFront() 時段1_rtp.Enabled = False : 時段2_rtp.Enabled = False : 時段3_rtp.Enabled = False 時段4_rtp.Enabled = False : 時段5_rtp.Enabled = False : 時段6_rtp.Enabled = False Else : 視窗3_pl.Visible = False : End If End Sub Private Sub 考勤編輯1_bt_Click(sender As Object, e As EventArgs) Handles 考勤編輯1_bt.Click If 視窗2_pl.Visible = False Then 時段A1_rtp.Value = "08:00:00" : 時段A2_rtp.Value = "12:00:00" : 時段A3_rtp.Value = "13:00:00" 時段A4_rtp.Value = "17:00:00" : 時段A5_rtp.Value = "18:00:00" : 時段A6_rtp.Value = "20:00:00" Dim XC As Integer = Me.Size.Width : Dim YC As Integer = Me.Size.Height Dim XD As Integer = 視窗2_pl.Width : Dim YD As Integer = 視窗2_pl.Height 視窗2_pl.Location = New System.Drawing.Point((XC - XD) / 2, (YC - YD) / 2) : 視窗2_pl.Visible = True : 視窗2_pl.BringToFront() Else : 視窗2_pl.Visible = False : End If End Sub Private Sub CanceL2_bt_Click(sender As Object, e As EventArgs) Handles CanceL2_bt.Click If 視窗2_pl.Visible = False Then : 視窗2_pl.Visible = True : 視窗2_pl.BringToFront() : Else : 視窗2_pl.Visible = False : Set_查詢表() : End If End Sub Private Sub CanceL3_bt_Click(sender As Object, e As EventArgs) Handles CanceL3_bt.Click If 視窗3_pl.Visible = False Then : 視窗3_pl.Visible = True : 視窗3_pl.BringToFront() : Else : 視窗3_pl.Visible = False : Set_考勤明細() : End If End Sub Private Sub CanceL4_bt_Click(sender As Object, e As EventArgs) Handles CanceL4_bt.Click If 視窗4_pl.Visible = False Then : 視窗4_pl.Visible = True : 視窗4_pl.BringToFront() : Else : 視窗4_pl.Visible = False : Set_考勤明細() : End If End Sub Private Sub 月份1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 月份1_cb.SelectedIndexChanged If 暫時不開 = False Then : PA2 = 年份1_cb.Text : PA3 = 月份1_cb.Text : Set_萬年曆() : End If End Sub Private Sub 年份1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年份1_cb.SelectedIndexChanged If 暫時不開 = False Then : PA2 = 年份1_cb.Text : PA3 = 月份1_cb.Text : Set_萬年曆() : End If End Sub Private Sub 在職_bt_Click(sender As Object, e As EventArgs) Handles 在職_bt.Click 在職 = True : Set_使用者清單() End Sub Private Sub 離職_bt_Click(sender As Object, e As EventArgs) Handles 離職_bt.Click 在職 = False : Set_使用者清單() End Sub Private Sub 實際打卡_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 實際打卡_cb.Click 實際打卡_cb.Checked = True : 考勤計算_cb.Checked = False : 資料規格() End Sub Private Sub 考勤計算_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 考勤計算_cb.Click 實際打卡_cb.Checked = False : 考勤計算_cb.Checked = True : 資料規格() End Sub Private Sub 級別_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 級別_cb.SelectedIndexChanged Set_使用者清單() End Sub Private Sub 級別1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 級別1_cb.SelectedIndexChanged Set_考勤彙總() End Sub Private Sub 級別2_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 級別2_cb.SelectedIndexChanged Set_查詢表() End Sub Private Sub 部門1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 部門1_cb.SelectedIndexChanged Set_查詢表() End Sub Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click For i As Integer = 0 To 萬年曆_dgv.Rows.Count - 1 PA15 = 萬年曆_dgv.Rows(i).Cells(表頭(3)).Value.ToString() : BL1 = 萬年曆_dgv.Rows(i).Cells(表頭(18)).Value : SQL_萬年曆_休假標註() Next : Set_萬年曆() : MGB(對話框(8), 1) End Sub Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged If TabControl1.SelectedTab Is 考勤彙總表_tp Then PA = "" : PA2 = 年份2_cb.Text : PA3 = 月份2_cb.Text : Set_總清單() ElseIf TabControl1.SelectedTab Is 考勤查詢表_tp Then 日期1_tb.Text = Strings.Format(日期1_dtp.Value, "yyyy/MM/dd") : Set_查詢表() End If End Sub Private Sub 工人_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 工人_ch.Click If 工人_ch.Checked = True Then : 工人 = True : Else : 工人 = False : End If If TabControl1.SelectedTab Is 考勤明細表_tp Then : Set_使用者清單() ElseIf TabControl1.SelectedTab Is 考勤彙總表_tp Then : Set_考勤彙總() ElseIf TabControl1.SelectedTab Is 考勤查詢表_tp Then : Set_查詢表() : End If End Sub Private Sub 加班請假_bt_Click(sender As Object, e As EventArgs) Handles 加班請假_bt.Click If ID_tb.Text = "" Or 姓名_tb.Text = "" Then : MGB(對話框(14), 1) : Else For i As Integer = 0 To 明細_dgv.Rows.Count - 1 ' BL1 = 明細_dgv.Rows(i).Cells(表頭(17)).Value : PA17 = 明細_dgv.Rows(i).Cells("假別編號").Value.ToString PA18 = 明細_dgv.Rows(i).Cells(表頭(27)).Value.ToString : PA15 = 明細_dgv.Rows(i).Cells(表頭(3)).Value.ToString : PA1 = ID_tb.Text SQL_人事考勤明細表查詢() : If dr.Read Then : SQL_人事考勤明細表修改() : Else : SQL_人事考勤明細表新增() : End If Next : Set_考勤明細() : MGB(對話框(8), 1) End If End Sub Private Sub 考勤調整_bt_Click(sender As Object, e As EventArgs) Handles 考勤調整_bt.Click If ID_tb.Text = "" Or 姓名_tb.Text = "" Then : MGB(對話框(14), 1) : Else PA15 = 日期_tb.Text : PA1 = ID_tb.Text If 時段1_rtp.Enabled = True And S1.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第一" : PA45 = Strings.Format(時段1_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = Strings.Format(時段1_rtp.Value, "HH:mm:ss") : PA9 = PA9.Replace(".", ":") : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 時段2_rtp.Enabled = True And S2.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第二" : PA45 = Strings.Format(時段2_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = Strings.Format(時段2_rtp.Value, "HH:mm:ss") : PA10 = PA10.Replace(".", ":") : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 時段3_rtp.Enabled = True And S3.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第三" : PA45 = Strings.Format(時段3_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = Strings.Format(時段3_rtp.Value, "HH:mm:ss") : PA11 = PA11.Replace(".", ":") : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 時段4_rtp.Enabled = True And S4.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第四" : PA45 = Strings.Format(時段4_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = Strings.Format(時段4_rtp.Value, "HH:mm:ss") : PA12 = PA12.Replace(".", ":") : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 時段5_rtp.Enabled = True And S5.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第五" : PA45 = Strings.Format(時段5_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = Strings.Format(時段5_rtp.Value, "HH:mm:ss") : PA13 = PA13.Replace(".", ":") : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 時段6_rtp.Enabled = True And S6.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第六" : PA45 = Strings.Format(時段6_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = Strings.Format(時段6_rtp.Value, "HH:mm:ss") : PA14 = PA14.Replace(".", ":") SQL_人事考勤明細表新增1() : End If End If 加班請假_bt.PerformClick() : Set_考勤明細() End If End Sub Private Sub 考勤調整1_bt_Click_1(sender As Object, e As EventArgs) Handles 考勤調整1_bt.Click For i As Integer = 0 To 查詢表_dgv.Rows.Count - 1 PA1 = 查詢表_dgv.Rows(i).Cells("ID卡號").Value.ToString : PA15 = 日期1_tb.Text If 查詢表_dgv.Rows(i).Cells(表頭(4)).Value.ToString = "" And SS1.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第一" : PA45 = Strings.Format(時段A1_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = Strings.Format(時段A1_rtp.Value, "HH:mm:ss") : PA9 = PA9.Replace(".", ":") : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 查詢表_dgv.Rows(i).Cells(表頭(5)).Value.ToString = "" And SS2.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第二" : PA45 = Strings.Format(時段A2_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = Strings.Format(時段A2_rtp.Value, "HH:mm:ss") : PA10 = PA10.Replace(".", ":") : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 查詢表_dgv.Rows(i).Cells(表頭(6)).Value.ToString = "" And SS3.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第三" : PA45 = Strings.Format(時段A3_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = Strings.Format(時段A3_rtp.Value, "HH:mm:ss") : PA11 = PA11.Replace(".", ":") : PA12 = "" : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 查詢表_dgv.Rows(i).Cells(表頭(7)).Value.ToString = "" And SS4.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第四" : PA45 = Strings.Format(時段A4_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = Strings.Format(時段A4_rtp.Value, "HH:mm:ss") : PA12 = PA12.Replace(".", ":") : PA13 = "" : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 查詢表_dgv.Rows(i).Cells(表頭(8)).Value.ToString = "" And SS5.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第五" : PA45 = Strings.Format(時段A5_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = Strings.Format(時段A5_rtp.Value, "HH:mm:ss") : PA13 = PA13.Replace(".", ":") : PA14 = "" SQL_人事考勤明細表新增1() : End If End If If 查詢表_dgv.Rows(i).Cells(表頭(9)).Value.ToString = "" And SS6.Checked = True Then SQL_人事考勤明細表查詢() If dr.Read Then : SQL2 = "第六" : PA45 = Strings.Format(時段A6_rtp.Value, "HH:mm:ss") : PA45 = PA45.Replace(".", ":") : SQL_人事考勤明細表修改1() Else : PA9 = "" : PA10 = "" : PA11 = "" : PA12 = "" : PA13 = "" : PA14 = Strings.Format(時段A6_rtp.Value, "HH:mm:ss") : PA14 = PA14.Replace(".", ":") SQL_人事考勤明細表新增1() : End If End If Next : Set_查詢表() End Sub Private Sub 時段1_rtp_Click(sender As Object, e As EventArgs) Handles 時段1_rtp.Click If S1.Checked = False Then : S1.Checked = True : End If End Sub Private Sub 時段2_rtp_Click(sender As Object, e As EventArgs) Handles 時段2_rtp.Click If S2.Checked = False Then : S2.Checked = True : End If End Sub Private Sub 時段3_rtp_Click(sender As Object, e As EventArgs) Handles 時段3_rtp.Click If S3.Checked = False Then : S3.Checked = True : End If End Sub Private Sub 時段4_rtp_Click(sender As Object, e As EventArgs) Handles 時段4_rtp.Click If S4.Checked = False Then : S4.Checked = True : End If End Sub Private Sub 時段5_rtp_Click(sender As Object, e As EventArgs) Handles 時段5_rtp.Click If S5.Checked = False Then : S5.Checked = True : End If End Sub Private Sub 時段6_rtp_Click(sender As Object, e As EventArgs) Handles 時段6_rtp.Click If S6.Checked = False Then : S6.Checked = True : End If End Sub Private Sub 時段A1_rtp_Click(sender As Object, e As EventArgs) Handles 時段A1_rtp.Click If SS1.Checked = False Then : SS1.Checked = True : End If End Sub Private Sub 時段A2_rtp_Click(sender As Object, e As EventArgs) Handles 時段A2_rtp.Click If SS2.Checked = False Then : SS2.Checked = True : End If End Sub Private Sub 時段A3_rtp_Click(sender As Object, e As EventArgs) Handles 時段A3_rtp.Click If SS3.Checked = False Then : SS3.Checked = True : End If End Sub Private Sub 時段A4_rtp_Click(sender As Object, e As EventArgs) Handles 時段A4_rtp.Click If SS4.Checked = False Then : SS4.Checked = True : End If End Sub Private Sub 時段A5_rtp_Click(sender As Object, e As EventArgs) Handles 時段A5_rtp.Click If SS5.Checked = False Then : SS5.Checked = True : End If End Sub Private Sub 時段A6_rtp_Click(sender As Object, e As EventArgs) Handles 時段A6_rtp.Click If SS6.Checked = False Then : SS6.Checked = True : End If End Sub Private Sub S1_CheckedChanged(sender As Object, e As EventArgs) Handles S1.Click If S1.Checked = False Then : S1.Checked = True : Else : S1.Checked = False : End If End Sub Private Sub S2_CheckedChanged(sender As Object, e As EventArgs) Handles S2.Click If S2.Checked = False Then : S2.Checked = True : Else : S2.Checked = False : End If End Sub Private Sub S3_CheckedChanged(sender As Object, e As EventArgs) Handles S3.Click If S3.Checked = False Then : S3.Checked = True : Else : S3.Checked = False : End If End Sub Private Sub S4_CheckedChanged(sender As Object, e As EventArgs) Handles S4.Click If S4.Checked = False Then : S4.Checked = True : Else : S4.Checked = False : End If End Sub Private Sub S5_CheckedChanged(sender As Object, e As EventArgs) Handles S5.Click If S5.Checked = False Then : S5.Checked = True : Else : S5.Checked = False : End If End Sub Private Sub S6_CheckedChanged(sender As Object, e As EventArgs) Handles S6.Click If S6.Checked = False Then : S6.Checked = True : Else : S6.Checked = False : End If End Sub Private Sub 高級_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 高級_cb.Click If 高級_cb.Checked = True And 時段1_rtp.Enabled = False Then : 時段1_rtp.Enabled = True : End If If 高級_cb.Checked = True And 時段2_rtp.Enabled = False Then : 時段2_rtp.Enabled = True : End If If 高級_cb.Checked = True And 時段3_rtp.Enabled = False Then : 時段3_rtp.Enabled = True : End If If 高級_cb.Checked = True And 時段4_rtp.Enabled = False Then : 時段4_rtp.Enabled = True : End If If 高級_cb.Checked = True And 時段5_rtp.Enabled = False Then : 時段5_rtp.Enabled = True : End If If 高級_cb.Checked = True And 時段6_rtp.Enabled = False Then : 時段6_rtp.Enabled = True : End If End Sub Private Sub 日期1_dtp_ValueChanged(sender As Object, e As EventArgs) Handles 日期1_dtp.ValueChanged 日期1_tb.Text = Strings.Format(日期1_dtp.Value, "yyyy/MM/dd") : Set_查詢表() End Sub Private Sub 部門_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 部門_cb.SelectedIndexChanged Set_查詢表() End Sub Private Sub 地區_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 地區_cb.SelectedIndexChanged Set_使用者清單() End Sub Private Sub 地區1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 地區1_cb.SelectedIndexChanged Set_考勤彙總() End Sub Private Sub DA3_bt_Click(sender As Object, e As EventArgs) Handles DA3_bt.Click 日期1_dtp.Value = 日期1_dtp.Value.AddDays(+1) End Sub Private Sub DA1_bt_Click(sender As Object, e As EventArgs) Handles DA1_bt.Click 日期1_dtp.Value = 日期1_dtp.Value.AddDays(-1) End Sub Private Shared Function NewMethod(xlBook As Workbook) As Worksheet Return CType(xlBook.Worksheets.Add, Worksheet) End Function Private Sub 列印() xlSheet = NewMethod(xlBook) xlApp.Sheets(1).Name = 姓名_tb.Text xlBook.Activate() : xlSheet.Activate() xlSheet.Cells(1, 1) = "LAPORAN KEHADIRAN KARYAWAN" xlSheet.Cells(2, 1) = "Fingerprint" : xlSheet.Cells(2, 7) = "Jabatan KKaryawan" xlSheet.Cells(3, 1) = "Kode Karyawan" : xlSheet.Cells(3, 7) = "Tanggal Gabung" xlSheet.Cells(4, 1) = "Nama Karyawan" : xlSheet.Cells(4, 7) = "Nama Departemer" xlSheet.Cells(5, 1) = "HARI" : xlSheet.Cells(5, 2) = "TANGGAL" : xlSheet.Cells(5, 3) = "JAM KERJA" : xlSheet.Cells(5, 4) = "KEGIATAN" : xlSheet.Cells(5, 5) = "JAM MASUK" xlSheet.Cells(5, 6) = "JAM KELUAR" : xlSheet.Cells(5, 7) = "TERLAMBAT" : xlSheet.Cells(5, 8) = "CEPAT PULANG" : xlSheet.Cells(5, 9) = "LEMBUR" xlSheet.Cells(5, 10) = "OTI" : xlSheet.Cells(5, 11) = "OTII" : xlSheet.Cells(5, 12) = "JUMLAH JAM" : xlSheet.Cells(5, 13) = "CATATAN" VBN = 0 : CBN = 0 For II As Integer = 0 To 明細_dgv.Rows.Count - 1 : CBN = 6 + II If 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" Then : VBN = 6 + II : AA(xlApp, xlSheet) : End If xlSheet.Cells(6 + II, 1) = 明細_dgv.Rows(II).Cells(表頭(2)).Value.ToString : xlSheet.Cells(6 + II, 2) = 明細_dgv.Rows(II).Cells(表頭(3)).Value.ToString '--------------第三格----------------- If 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" Or 明細_dgv.Rows(II).Cells(表頭(18)).Value = True Then If 明細_dgv.Rows(II).Cells(表頭(17)).Value = False Then : xlSheet.Cells(6 + II, 3) = "" : Else If 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期六" Then : xlSheet.Cells(6 + II, 3) = "08:00-12:00" : Else : xlSheet.Cells(6 + II, 3) = "08:00-17:00" : End If End If ElseIf 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期六" Then : xlSheet.Cells(6 + II, 3) = "08:00-12:00" : Else : xlSheet.Cells(6 + II, 3) = "08:00-17:00" : End If '--------------第四格----------------- If 明細_dgv.Rows(II).Cells(表頭(26)).Value.ToString <> "" Then xlSheet.Cells(6 + II, 4) = 明細_dgv.Rows(II).Cells(表頭(26)).Value.ToString Else If (明細_dgv.Rows(II).Cells(表頭(17)).Value = False And 明細_dgv.Rows(II).Cells(表頭(18)).Value = True) Or (明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(II).Cells(表頭(17)).Value = False) Then xlSheet.Cells(6 + II, 4) = "" Else If 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(II).Cells(表頭(17)).Value = False Then : xlSheet.Cells(6 + II, 4) = "" ElseIf 明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(II).Cells(表頭(17)).Value = True Then : xlSheet.Cells(6 + II, 4) = "Work" Else : xlSheet.Cells(6 + II, 4) = "Work" : End If End If End If If (明細_dgv.Rows(II).Cells(表頭(17)).Value = False And 明細_dgv.Rows(II).Cells(表頭(18)).Value = True) Or (明細_dgv.Rows(II).Cells("MGB").Value.ToString = "星期日" And 明細_dgv.Rows(II).Cells(表頭(17)).Value = False) Then xlSheet.Cells(6 + II, 5) = "" : xlSheet.Cells(6 + II, 6) = "" Else '--------------第五格----------------- If 明細_dgv.Rows(II).Cells(表頭(4)).Value.ToString <> "" Then xlSheet.Cells(6 + II, 5) = 明細_dgv.Rows(II).Cells(表頭(4)).Value.ToString : Else : xlSheet.Cells(6 + II, 5) = "" : End If '--------------第六格----------------- If 明細_dgv.Rows(II).Cells(表頭(4)).Value.ToString <> "" And 明細_dgv.Rows(II).Cells(表頭(7)).Value.ToString <> "" Then xlSheet.Cells(6 + II, 6) = 明細_dgv.Rows(II).Cells(表頭(7)).Value.ToString ElseIf 明細_dgv.Rows(II).Cells(表頭(4)).Value.ToString <> "" And 明細_dgv.Rows(II).Cells(表頭(5)).Value.ToString <> "" Then xlSheet.Cells(6 + II, 6) = 明細_dgv.Rows(II).Cells(表頭(5)).Value.ToString Else : xlSheet.Cells(6 + II, 6) = "" : End If '--------------第八、九格----------------- If 明細_dgv.Rows(II).Cells(表頭(8)).Value.ToString <> "" And 明細_dgv.Rows(II).Cells(表頭(9)).Value.ToString <> "" Then xlSheet.Cells(6 + II, 8) = 明細_dgv.Rows(II).Cells(表頭(8)).Value.ToString : xlSheet.Cells(6 + II, 9) = 明細_dgv.Rows(II).Cells(表頭(9)).Value.ToString End If '--------------第十、十一格----------------- If 明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString = "" Then : Else If CInt(Strings.Left(明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2)) > 8 Then If CInt(Strings.Left(明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2)) - 8 = 1 Then : xlSheet.Cells(6 + II, 10) = "1" : xlSheet.Cells(6 + II, 11) = "" ElseIf CInt(Strings.Left(明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2)) - 8 > 1 Then xlSheet.Cells(6 + II, 10) = "1" : xlSheet.Cells(6 + II, 11) = CInt(Strings.Left(明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString, 2)) - 9 End If Else : xlSheet.Cells(6 + II, 10) = "" : xlSheet.Cells(6 + II, 11) = "" : End If End If End If '--------------第十二、十三格----------------- xlSheet.Cells(6 + II, 12) = 明細_dgv.Rows(II).Cells(表頭(16)).Value.ToString : xlSheet.Cells(6 + II, 13) = 明細_dgv.Rows(II).Cells(表頭(27)).Value.ToString Next xlSheet.Cells(CBN + 1, 1) = "Total Kerja" : xlSheet.Cells(CBN + 1, 10) = "=SUM(J6:J" & CBN & ")" : xlSheet.Cells(CBN + 1, 11) = "=SUM(K6:K" & CBN & ")" xlSheet.Cells(CBN + 1, 12) = 總時數_tb.Text : BB(xlApp, xlSheet) End Sub Private Sub 列印_bt_Click(sender As Object, e As EventArgs) Handles 列印_bt.Click xlApp = CType(CreateObject("Excel.Application"), Application) xlBook = xlApp.Workbooks.Add xlApp.DisplayAlerts = True xlApp.Visible = True xlApp.Application.WindowState = xlMaximized If 單一列印_cb.Checked = True Then : If 姓名_tb.Text = "" Then : MGB(對話框(14), 1) : Else : 列印() : End If : Else For I As Integer = 0 To 清單1_dgv.Rows.Count - 1 PA1 = 清單1_dgv.Rows(I).Cells("ID卡號").Value.ToString : 姓名_tb.Text = 清單1_dgv.Rows(I).Cells(表頭(0)).Value.ToString.ToUpper 員工代碼_tb.Text = 清單1_dgv.Rows(I).Cells(表頭(23)).Value.ToString.ToUpper : 員工崗位_tb.Text = 清單1_dgv.Rows(I).Cells(表頭(24)).Value.ToString.ToUpper 部門名稱_tb.Text = 清單1_dgv.Rows(I).Cells(表頭(25)).Value.ToString.ToUpper ID_tb.Text = PA1 : PA2 = 年份_cb.Text : PA3 = 月份_cb.Text : Set_考勤明細() : 列印() Next End If xlSheet.PageSetup.PrintArea = "" xlApp.Cells.Select() xlApp.Application.WindowState = xlMinimized MGB(對話框(18), 1) End Sub Private Sub AA(ByVal myExcel As Application, ByVal xlSheet As Worksheet) xlSheet.Range("A" & VBN & ":M" & VBN).Select() With myExcel.Selection.Interior : .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorAccent2 .TintAndShade = 0.599993896298105 : .PatternTintAndShade = 0 : End With End Sub Private Sub BB(ByVal myExcel As Application, ByVal xlSheet As Worksheet) xlSheet.Range("A1:D1").Select() With myExcel.Selection.Interior : .Pattern = xlSolid : .PatternColorIndex = xlAutomatic : .ThemeColor = xlThemeColorAccent5 .TintAndShade = 0.799981688894314 : .PatternTintAndShade = 0 : End With xlSheet.Columns("A:A").Select : myExcel.Selection.ColumnWidth = 8 xlSheet.Columns("B:B").Select : myExcel.Selection.ColumnWidth = 11 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("C:C").Select : myExcel.Selection.ColumnWidth = 11 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("D:D").Select : myExcel.Selection.ColumnWidth = 12 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("E:I").Select : myExcel.Selection.ColumnWidth = 9 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("J:K").Select : myExcel.Selection.ColumnWidth = 5 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("L:L").Select : myExcel.Selection.ColumnWidth = 11 With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Columns("M:M").Select : myExcel.Selection.ColumnWidth = 12 xlSheet.Rows("5:5").Select With myExcel.Selection : .VerticalAlignment = xlCenter : .WrapText = True : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0 : .ShrinkToFit = False .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Range("G2:G4").Select() With myExcel.Selection : .HorizontalAlignment = xlLeft : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With xlSheet.Range("A5:M5").Select() myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone xlSheet.Range("A6:M" & CBN).Select() myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone xlSheet.Range("A" & CBN + 1 & ":I" & CBN + 1).Select() With myExcel.Selection : .HorizontalAlignment = xlCenter : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False : End With : myExcel.Selection.Merge With myExcel.Selection : .HorizontalAlignment = xlRight : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False .IndentLevel = 0 : .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = True : End With xlSheet.Range("A" & CBN + 1 & ":M" & CBN + 1).Select() myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlMedium : End With With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone xlSheet.Range("H" & CBN).Select() : myExcel.ActiveWindow.DisplayGridlines = False xlSheet.Rows("6:6").Select : myExcel.ActiveWindow.FreezePanes = True xlSheet.Range("M2").Select() End Sub '----------------------自創視窗滑鼠拖曳功能--------------------------------------------------------------------------------------------------------- Dim OldX, OldY As Long Dim drag As Boolean Private Sub 視窗4_pl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗4_pl.MouseDown If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If End Sub Private Sub 視窗4_pl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗4_pl.MouseMove If drag Then : 視窗4_pl.Left = 視窗4_pl.Left + e.X - OldX : 視窗4_pl.Top = 視窗4_pl.Top + e.Y - OldY : End If End Sub Private Sub 視窗4_pl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗4_pl.MouseUp drag = False End Sub Private Sub 視窗3_pl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗3_pl.MouseDown If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If End Sub Private Sub 視窗3_pl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗3_pl.MouseMove If drag Then : 視窗3_pl.Left = 視窗3_pl.Left + e.X - OldX : 視窗3_pl.Top = 視窗3_pl.Top + e.Y - OldY : End If End Sub Private Sub 視窗3_pl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗3_pl.MouseUp drag = False End Sub Private Sub 視窗2_pl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseDown If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If End Sub Private Sub 視窗2_pl_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseMove If drag Then : 視窗2_pl.Left = 視窗2_pl.Left + e.X - OldX : 視窗2_pl.Top = 視窗2_pl.Top + e.Y - OldY : End If End Sub Private Sub 視窗2_pl_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗2_pl.MouseUp drag = False End Sub Private Sub Label11_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label11.MouseDown If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If End Sub Private Sub Label11_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label11.MouseMove If drag Then : 視窗3_pl.Left = 視窗3_pl.Left + e.X - OldX : 視窗3_pl.Top = 視窗3_pl.Top + e.Y - OldY : End If End Sub Private Sub Label11_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label24.MouseUp drag = False End Sub Private Sub Label24_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label24.MouseDown If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If End Sub Private Sub Label24_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label24.MouseMove If drag Then : 視窗2_pl.Left = 視窗2_pl.Left + e.X - OldX : 視窗2_pl.Top = 視窗2_pl.Top + e.Y - OldY : End If End Sub Private Sub Label24_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Label24.MouseUp drag = False End Sub Private Sub 風格() If 深色風格 = False Then 考勤明細表_tp.BackColor = SystemColors.Control : 考勤彙總表_tp.BackColor = SystemColors.Control : 視窗4_pl.BackColor = SystemColors.Control 考勤查詢表_tp.BackColor = SystemColors.Control : Panel6.BackColor = Color.White : 視窗3_pl.BackColor = SystemColors.Control : Panel4.BackColor = Color.White 視窗2_pl.BackColor = SystemColors.Control : Panel5.BackColor = Color.White '----------------黑------------------------------------------- 小間距1_ch.ForeColor = Color.Black : 中間距1_ch.ForeColor = Color.Black : 大間距1_ch.ForeColor = Color.Black : Label8.ForeColor = Color.Black Label17.ForeColor = Color.Black : Label16.ForeColor = Color.Black : Label9.ForeColor = Color.Black : Label10.ForeColor = Color.Black Label1.ForeColor = Color.Black : Label5.ForeColor = Color.Black : Label4.ForeColor = Color.Black : Label56.ForeColor = Color.Black Label24.ForeColor = Color.Black : Label23.ForeColor = Color.Black : Label22.ForeColor = Color.Black : Label21.ForeColor = Color.Black Label20.ForeColor = Color.Black : Label19.ForeColor = Color.Black : Label18.ForeColor = Color.Black : Label3.ForeColor = Color.Black Label2.ForeColor = Color.Black : Label6.ForeColor = Color.Black : Label7.ForeColor = Color.Black : Label12.ForeColor = Color.Black Label13.ForeColor = Color.Black : Label14.ForeColor = Color.Black : Label15.ForeColor = Color.Black : 高級_cb.ForeColor = Color.Black 語轉扭_bt.BackColor = Color.White : 語轉扭_bt.ForeColor = Color.Black :: 姓名_tb.BackColor = Color.White : 姓名_tb.ForeColor = Color.Black 在職_bt.BackColor = Color.White : 在職_bt.ForeColor = Color.Black : 離職_bt.BackColor = Color.White : 離職_bt.ForeColor = Color.Black 員工代碼_tb.BackColor = Color.White : 員工代碼_tb.ForeColor = Color.Black : 員工崗位_tb.BackColor = Color.White : 員工崗位_tb.ForeColor = Color.Black 部門名稱_tb.BackColor = Color.White : 部門名稱_tb.ForeColor = Color.Black : 日期_tb.BackColor = Color.White : 日期_tb.ForeColor = Color.Black 日期1_tb.BackColor = Color.White : 日期1_tb.ForeColor = Color.Black : 總時數_tb.BackColor = Color.White : 總時數_tb.ForeColor = Color.Black 時段1_rtp.BackColor = Color.White : 時段1_rtp.ForeColor = Color.Black : 時段2_rtp.BackColor = Color.White : 時段2_rtp.ForeColor = Color.Black 時段3_rtp.BackColor = Color.White : 時段3_rtp.ForeColor = Color.Black : 時段4_rtp.BackColor = Color.White : 時段4_rtp.ForeColor = Color.Black 時段5_rtp.BackColor = Color.White : 時段5_rtp.ForeColor = Color.Black : 時段6_rtp.BackColor = Color.White : 時段6_rtp.ForeColor = Color.Black 時段A1_rtp.BackColor = Color.White : 時段A1_rtp.ForeColor = Color.Black : 時段A2_rtp.BackColor = Color.White : 時段A2_rtp.ForeColor = Color.Black 時段A3_rtp.BackColor = Color.White : 時段A3_rtp.ForeColor = Color.Black : 時段A4_rtp.BackColor = Color.White : 時段A4_rtp.ForeColor = Color.Black 時段A5_rtp.BackColor = Color.White : 時段A5_rtp.ForeColor = Color.Black : 時段A6_rtp.BackColor = Color.White : 時段A6_rtp.ForeColor = Color.Black 存檔_bt.BackColor = Color.White : 考勤調整_bt.BackColor = Color.White : 考勤編輯_bt.BackColor = Color.White : 加班請假_bt.BackColor = Color.White 列印_bt.BackColor = Color.White : 考勤調整1_bt.BackColor = Color.White : 考勤編輯1_bt.BackColor = Color.White : DA1_bt.BackColor = Color.White DA3_bt.BackColor = Color.White 清單1_dgv.EnableHeadersVisualStyles = True : 清單1_dgv.BackgroundColor = Color.White : 清單1_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black 清單1_dgv.DefaultCellStyle.BackColor = Color.White : 清單1_dgv.DefaultCellStyle.ForeColor = Color.Black 明細_dgv.EnableHeadersVisualStyles = True : 明細_dgv.BackgroundColor = Color.White : 明細_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black 明細_dgv.DefaultCellStyle.BackColor = Color.White : 明細_dgv.DefaultCellStyle.ForeColor = Color.Black 萬年曆_dgv.EnableHeadersVisualStyles = True : 萬年曆_dgv.BackgroundColor = Color.White : 萬年曆_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black 萬年曆_dgv.DefaultCellStyle.BackColor = Color.White : 萬年曆_dgv.DefaultCellStyle.ForeColor = Color.Black 考勤彙總_dgv.EnableHeadersVisualStyles = True : 考勤彙總_dgv.BackgroundColor = Color.White : 考勤彙總_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black 考勤彙總_dgv.DefaultCellStyle.BackColor = Color.White : 考勤彙總_dgv.DefaultCellStyle.ForeColor = Color.Black 查詢表_dgv.EnableHeadersVisualStyles = True : 查詢表_dgv.BackgroundColor = Color.White : 查詢表_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black 查詢表_dgv.DefaultCellStyle.BackColor = Color.White : 查詢表_dgv.DefaultCellStyle.ForeColor = Color.Black Else 考勤明細表_tp.BackColor = Color.Black : 考勤彙總表_tp.BackColor = Color.Black : 考勤查詢表_tp.BackColor = Color.Black 視窗4_pl.BackColor = Color.DimGray : Panel6.BackColor = Color.Black : 視窗3_pl.BackColor = Color.DimGray : Panel4.BackColor = Color.Black 視窗2_pl.BackColor = Color.DimGray : Panel5.BackColor = Color.Black '----------------黑------------------------------------------- 小間距1_ch.ForeColor = Color.White : 中間距1_ch.ForeColor = Color.White : 大間距1_ch.ForeColor = Color.White : Label8.ForeColor = Color.White Label17.ForeColor = Color.White : Label16.ForeColor = Color.White : Label9.ForeColor = Color.White : Label10.ForeColor = Color.White Label1.ForeColor = Color.White : Label5.ForeColor = Color.White : Label4.ForeColor = Color.White : Label56.ForeColor = Color.White Label24.ForeColor = Color.White : Label23.ForeColor = Color.White : Label22.ForeColor = Color.White : Label21.ForeColor = Color.White Label20.ForeColor = Color.White : Label19.ForeColor = Color.White : Label18.ForeColor = Color.White : Label3.ForeColor = Color.White Label2.ForeColor = Color.White : Label6.ForeColor = Color.White : Label7.ForeColor = Color.White : Label12.ForeColor = Color.White Label13.ForeColor = Color.White : Label14.ForeColor = Color.White : Label15.ForeColor = Color.White : 高級_cb.ForeColor = Color.White 語轉扭_bt.BackColor = Color.DimGray : 語轉扭_bt.ForeColor = Color.White :: 姓名_tb.BackColor = Color.DimGray : 姓名_tb.ForeColor = Color.White 在職_bt.BackColor = Color.DimGray : 在職_bt.ForeColor = Color.White : 離職_bt.BackColor = Color.DimGray : 離職_bt.ForeColor = Color.White 員工代碼_tb.BackColor = Color.DimGray : 員工代碼_tb.ForeColor = Color.White : 員工崗位_tb.BackColor = Color.DimGray : 員工崗位_tb.ForeColor = Color.White 部門名稱_tb.BackColor = Color.DimGray : 部門名稱_tb.ForeColor = Color.White : 日期_tb.BackColor = Color.DimGray : 日期_tb.ForeColor = Color.White 日期1_tb.BackColor = Color.DimGray : 日期1_tb.ForeColor = Color.White : 總時數_tb.BackColor = Color.DimGray : 總時數_tb.ForeColor = Color.White 時段1_rtp.BackColor = Color.Black : 時段1_rtp.ForeColor = Color.White : 時段2_rtp.BackColor = Color.Black : 時段2_rtp.ForeColor = Color.White 時段3_rtp.BackColor = Color.Black : 時段3_rtp.ForeColor = Color.White : 時段4_rtp.BackColor = Color.Black : 時段4_rtp.ForeColor = Color.White 時段5_rtp.BackColor = Color.Black : 時段5_rtp.ForeColor = Color.White : 時段6_rtp.BackColor = Color.Black : 時段6_rtp.ForeColor = Color.White 時段A1_rtp.BackColor = Color.Black : 時段A1_rtp.ForeColor = Color.White : 時段A2_rtp.BackColor = Color.Black : 時段A2_rtp.ForeColor = Color.White 時段A3_rtp.BackColor = Color.Black : 時段A3_rtp.ForeColor = Color.White : 時段A4_rtp.BackColor = Color.Black : 時段A4_rtp.ForeColor = Color.White 時段A5_rtp.BackColor = Color.Black : 時段A5_rtp.ForeColor = Color.White : 時段A6_rtp.BackColor = Color.Black : 時段A6_rtp.ForeColor = Color.White 存檔_bt.BackColor = Color.DimGray : 考勤調整_bt.BackColor = Color.DimGray : 考勤編輯_bt.BackColor = Color.DimGray : 加班請假_bt.BackColor = Color.DimGray 列印_bt.BackColor = Color.DimGray : 考勤調整1_bt.BackColor = Color.DimGray : 考勤編輯1_bt.BackColor = Color.DimGray : DA1_bt.BackColor = Color.DimGray DA3_bt.BackColor = Color.DimGray 清單1_dgv.EnableHeadersVisualStyles = False : 清單1_dgv.BackgroundColor = Color.DimGray : 清單1_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White 清單1_dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Black : 清單1_dgv.DefaultCellStyle.BackColor = Color.Black : 清單1_dgv.DefaultCellStyle.ForeColor = Color.White 明細_dgv.EnableHeadersVisualStyles = False : 明細_dgv.BackgroundColor = Color.DimGray : 明細_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White 明細_dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Black : 明細_dgv.DefaultCellStyle.BackColor = Color.Black : 明細_dgv.DefaultCellStyle.ForeColor = Color.White 萬年曆_dgv.EnableHeadersVisualStyles = False : 萬年曆_dgv.BackgroundColor = Color.DimGray : 萬年曆_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White 萬年曆_dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Black : 萬年曆_dgv.DefaultCellStyle.BackColor = Color.Black : 萬年曆_dgv.DefaultCellStyle.ForeColor = Color.White 考勤彙總_dgv.EnableHeadersVisualStyles = False : 考勤彙總_dgv.BackgroundColor = Color.DimGray : 考勤彙總_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White 考勤彙總_dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Black : 考勤彙總_dgv.DefaultCellStyle.BackColor = Color.Black : 考勤彙總_dgv.DefaultCellStyle.ForeColor = Color.White 查詢表_dgv.EnableHeadersVisualStyles = False : 查詢表_dgv.BackgroundColor = Color.DimGray : 查詢表_dgv.ColumnHeadersDefaultCellStyle.ForeColor = Color.White 查詢表_dgv.ColumnHeadersDefaultCellStyle.BackColor = Color.Black : 查詢表_dgv.DefaultCellStyle.BackColor = Color.Black : 查詢表_dgv.DefaultCellStyle.ForeColor = Color.White End If End Sub End Class