Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: One от 22 Март 2022, 15:12

Название: Дайте совет для минимизации кода
Отправлено: One от 22 Март 2022, 15:12
Есть у меня некая база объектов на первом листе. Из этой базы я создаю графики технических осмотров для людей на разных листах. Есть у меня макрос, который расставляет ТО на будние дни по два или три в день. Макрос на листе "ЭтаКнига" вот он:
 Sub РасстановкамногоТО()

Dim i As Integer
Dim j As Integer
Dim g As Integer
For g = 13 To 22
Sheets(g).Activate
Range("H9:AL53").Value = " "
i = 9
j = 8
Do While j < 39 And Cells(i, 1).Value <> ""
If Cells(8, j).Value = "РД" Then
Cells(i, j).Value = Cells(i, 39).Value
i = i + 1
Cells(i, j).Value = Cells(i, 39).Value
i = i + 1
Else
Cells(i, j).Value = ""
End If
j = j + 1
Loop
j = 38
Do While Cells(i, 1).Value <> ""
If Cells(8, j).Value = "РД" Then
Cells(i, j).Value = Cells(i, 39).Value
i = i + 1
Else
Cells(i, j).Value = ""
End If
j = j - 1
Loop
Next g
End Sub

Как видно он расставляет ТО по две штуки в день.
Если мне нужно расставить ТО в каком-то определённом листе по другому, то я пишу вот так:

Sub РасстановкаТОмитр()

Dim i As Integer
Dim j As Integer

Range("H9:AL53").Value = " "
i = 9
j = 8
Do While j < 39
If Cells(8, j).Value = "РД" Then
Cells(i, j).Value = Cells(i, 39).Value
i = i + 1
Else
Cells(i, j).Value = ""
End If
j = j + 1
Loop
j = 38
Do While Cells(i, 1).Value <> ""
If Cells(8, j).Value = "РД" Then
Cells(i, j).Value = Cells(i, 39).Value
i = i + 1
Else
Cells(i, j).Value = ""
End If
j = j - 1
Loop
End Sub
Например, вот этот код расставляет ТО по одному в день и т.д. Так приходится делать для каждой страницы. Потом я вставляю кнопочку и привязываю ей действие написанное на соответствующей странице.
Как сделать, чтобы можно было ввести нужное количество ТО в день в окно и потом нажав кнопочку проделать нужный код и не копировать его на каждый лист.
Название: Re: Дайте совет для минимизации кода
Отправлено: Администратор от 22 Март 2022, 21:28
Наверное нужно файл смотреть и смотреть, что в этом файле нужно сделать.