Мне нужна помощь, чтобы создать цикл из моего кода
Код имеет две основные функции:
- Копирование и вставка общих данных в другую рабочую книгу
- Скопируйте и вставьте данные сотрудника в другую рабочую книгу
Я хочу сделать цикл моего кода (код показан ниже). Я могу сделать этот код 15 раз, и он будет работать, но я думаю, что цикл лучше. У меня нет опыта работы с петлями.
Поэтому, когда я нажимаю кнопку на своем листе, он копирует общие данные и открывает другую рабочую книгу, затем возвращается в основную рабочую книгу, копирует данные о сотрудниках и вставляет их в другую рабочую книгу.
Рабочая книга, которую нужно открыть, находится в диапазоне F82: F96, поэтому сначала F82, затем F83 ... и т. Д., Пока она не достигнет F96, а затем код должен остановиться.
Общие данные всегда находятся в строках 15 и 16.
Данные о сотруднике находятся в той же строке, что и рабочая книга, которую необходимо открыть. Строка после строки должна быть скопирована и вставлена в другую книгу. Так, например (G82: DI82).
Что у меня есть
Я создал код, который работает на 1 сотрудника в ячейке (F82). Приведенный ниже код открывает книгу этого сотрудника, затем копирует общие данные, затем находит нужный столбец и строку для вставки. Затем я вставляю данные, затем они возвращаются в основную рабочую книгу и копируют данные, принадлежащие сотруднику (G82: DI82), и вставляют эти данные в другую рабочую книгу. Затем он сохраняет закрытые открытые книги. Основная рабочая книга остается открытой.
Что я ожидаю
Мне нужен цикл для повторения кода. Итак, сначала сотрудник, который находится в (F82), затем сотрудник, который в (F83) и так далее.
код:
Private Sub mUpdate_Click()
Dim General As Range
Dim employe1hours As Range
Dim employepaste As Range
Dim employepastehours As Range
Dim CurrentweekColumn As Range
Dim Currentweekpaste As Range
Dim employepath As String
Dim employe1 As String
Dim rowstr As String
Dim Foundrow As Range
Dim Currentweek As String
employepath = "J:\Planning\Medewerkers\"
Currentweek = Range("B7").Value
employe1 = Range("F82").Value
rowstr = Range("A2").Value
With ActiveWorkbook.Sheets("Planning").Range("14:14")
Set CurrentweekColumn = .find(what:=Currentweek, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
End With
Set General = ActiveWorkbook.Sheets("Planning").Range(Cells(15, CurrentweekColumn.Column), Cells(16, CurrentweekColumn.Offset(0, 106).Column))
General.Copy
Workbooks.Open (employepath & employe1 & ".xlsm")
With ActiveWorkbook.Sheets("Blad1").Range("14:14")
Set Currentweekpaste = .find(what:=Currentweek, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
End With
With ActiveWorkbook.Sheets("Blad1").Range("A:A")
Set Foundrow = .find(what:=rowstr, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False, SearchFormat:=False)
End With
Set employepaste = ActiveWorkbook.Sheets("Blad1").Range(Cells(Foundrow.Row, Currentweekpaste.Column).Address)
employepaste.PasteSpecial Paste:=xlPasteFormats
employepaste.PasteSpecial Paste:=xlPasteValues
Workbooks(rowstr & ".xlsm").Activate
Set employe1hours = ActiveWorkbook.Sheets("Planning").Range(Cells(82, CurrentweekColumn.Column), Cells(82, CurrentweekColumn.Offset(0, 106).Column))
employe1hours.Copy
Workbooks(employe1 & ".xlsm").Activate
Set employepastehours = ActiveWorkbook.Sheets("Blad1").Range(Cells(Foundrow.Offset(2, 0).Row, Currentweekpaste.Column).Address)
employepastehours.PasteSpecial Paste:=xlPasteValues
ActiveWorkbook.Save
ActiveWorkbook.Close