Автор Тема: Дайте совет для минимизации кода  (Прочитано 189 раз)

Оффлайн One

  • Посетитель форума
  • Сообщений: 1
Есть у меня некая база объектов на первом листе. Из этой базы я создаю графики технических осмотров для людей на разных листах. Есть у меня макрос, который расставляет ТО на будние дни по два или три в день. Макрос на листе "ЭтаКнига" вот он:
 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
Например, вот этот код расставляет ТО по одному в день и т.д. Так приходится делать для каждой страницы. Потом я вставляю кнопочку и привязываю ей действие написанное на соответствующей странице.
Как сделать, чтобы можно было ввести нужное количество ТО в день в окно и потом нажав кнопочку проделать нужный код и не копировать его на каждый лист.

Оффлайн Администратор

  • Administrator
  • Сообщений: 2029
Re: Дайте совет для минимизации кода
« Ответ #1 : 22 Март 2022, 21:28 »
Наверное нужно файл смотреть и смотреть, что в этом файле нужно сделать.