Sub Переработки()
Dim tbl As Object
Dim lastrow, lastrow1, lastrow2, lastcol As Integer
Dim i, j As Integer
Dim tip, fio, data, ob, vid, vr As Variant
Dim mes As Integer
Dim ListRow As ListRow
Set tbl = Workbooks("Люди.xlsm").Sheets("Переработки").ListObjects("Переработка")
mes = Workbooks("Люди.xlsm").Sheets("Табель").Range("B1").Value
lastrow = Workbooks("Люди.xlsm").Sheets("Табель").Cells(Rows.Count, 1).End(xlUp).Row
lastrow1 = tbl.DataBodyRange.Rows.Count
tbl.DataBodyRange.Delete
lastrow2 = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Rows.Count + 1
lastcol = Workbooks("Люди.xlsm").Sheets("Табель").Cells(3, Columns.Count).End(xlToLeft).Column
For i = 4 To lastrow
For j = 6 To lastcol
If Workbooks("Люди.xlsm").Sheets("Табель").Cells(i, j).Interior.Color = vbYellow Then
lastrow1 = lastrow1 + 1
fio = Workbooks("Люди.xlsm").Sheets("Табель").Cells(i, 2)
data = CDate(Workbooks("Люди.xlsm").Sheets("Табель").Cells(3, j) & "." & mes & ".2022")
If Workbooks("Люди.xlsm").Sheets("Табель").Cells(3, j).Interior.Color = vbGreen Then
tip = "выходной"
vr = Workbooks("Люди.xlsm").Sheets("Табель").Cells(i, j)
Else
tip = "рабочий"
vr = Workbooks("Люди.xlsm").Sheets("Табель").Cells(i, j) - 8
End If
Call Значения(lastrow2, tip, fio, data, ob, rab)
Call Переработки_заполнить(tbl, lastrow1, fio, data, ob, rab, vr)
End If
Next j
Next i
MsgBox ("Переработки сформированы согласно табелю за " & mes & ".2022 г.")
End Sub
Private Sub Значения(last, tip, fio, data, ob, rab)
Dim a, b As Integer
Dim arr_ob() As Variant
Dim arr_rab() As Variant
Erase arr_ob
Erase arr_rab
b = 0
If tip = "выходной" Then
For a = 2 To lastrow2
If Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 1) = data And Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 3) = fio Then
ob = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 8)
rab = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 9)
End If
Next a
Else
For a = 2 To last
If Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 1) = data And Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 3) = fio And Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 7) > 8 Then
ob = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 8)
rab = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 9)
Else
If Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 1) = data And Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 3) = fio And Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 7) <= 8 Then
b = b + 1
ReDim Preserve arr_ob(0 To b)
arr_ob(UBound(arr_ob)) = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 8)
ReDim Preserve arr_rab(0 To b)
arr_rab(UBound(arr_rab)) = Workbooks("Люди.xlsm").Sheets("Для заполнения").ListObjects("Заполнение").DataBodyRange.Cells(a, 9)
ob = arr_ob(UBound(arr_ob))
rab = arr_rab(UBound(arr_rab))
End If
End If
Next a
End If
End Sub
Private Sub Переработки_заполнить(tbl, str, fio, data, ob, rab, vr)
tbl.Resize (tbl.Range.Resize(str, 5))
tbl.DataBodyRange.Cells(str, 1) = fio
tbl.DataBodyRange.Cells(str, 2) = data
tbl.DataBodyRange.Cells(str, 3) = ob
tbl.DataBodyRange.Cells(str, 4) = rab
tbl.DataBodyRange.Cells(str, 5) = vr
End Sub
|