Перемещение выполненной задачи со страницы «Отложенные» в архив

В случае исполнения задачи, находящейся как на странице «Отложенные», так и на страницах «Проекты», «Периодическое» их необходимо переместить на лист «Архив». При этом данную процедуру можно выполнять вручную, вырезав соответствующие строки на нужном листе и переместив их на лист «Архив». Но, когда это действие выполняется несколько раз в день, это утомляет и порой напрягает.

Для автоматизации вышеописанного процесса сначала добавим автоматически появляющуюся кнопку, в случае наличия даты в столбце «E», записав соответствующую формулу в столбец «K»:

=ЕСЛИ(E3>0;"Выполнено";"")

Теперь напишем небольшой макрос в процедуре Private Sub Worksheet_SelectionChange(ByVal Target As Range) на листе «Отложенные»:

' Выполнено
If Cells(ActiveCell.Row, ActiveCell.Column).Value = "Выполнено" And ActiveCell.Column = 11 Then
' ссылка на лист "Отложенные"
Set otl = Workbooks("planero.xlsm").Worksheets("Отложенные")
' ссылка на лист "Архив"
Set arh = Workbooks("planero.xlsm").Worksheets("Архив")
' запоминаем номер строки в которой была нажата кнопка "Выполнено"
n_stroki = ActiveCell.Row
n_stroki2 = "B" & n_stroki
' показываем пользователю диалоговое окно с кнопками "Да/Нет" для подтверждения выполнения пункта
zapros = MsgBox("Задача: " & Chr(10) & Chr(10) & otl.Range(n_stroki2).Value & Chr(10) & Chr(10) & "выполнена?", vbYesNo, "")

' если пользователь нажал кнопку "Да" в диалоговом окне
If zapros = 6 Then
' изменяем кнопку с "Выполнено" на "Невыполненно"
Cells(ActiveCell.Row, ActiveCell.Column).FormulaLocal = "=ЕСЛИ(E" & ActiveCell.Row & ">0;" & """Невыполнено"";" & """"")"
' вырезаем выполненную задачу на листе "Отложенные"
otl.Rows(n_stroki & ":" & n_stroki).Cut
' переходим на лист "Архив"
arh.Select
' вставляем вырезанные данные в третью строку, при этом переместив ранее записанные данные в низ по листу
arh.Rows("3:3").Insert
' возвращаемся на лист "Отложенные"
otl.Select
' удаляем с листа "Отложенные" ранее вырезанный лист
otl.Rows(n_stroki & ":" & n_stroki).Delete Shift:=xlUp
End If
' убираем курсор с кнопки "Выполнено"

otl.Cells(ActiveCell.Row, ActiveCell.Column - 10).Select
End If

На итог получим автоматическое перемещение выполненной задачи со страницы «Отложенные» в архив:

Перемещение выполненных пунктов архив

Следующим этапом автоматизируем работу с выполненными задачами на листе «Периодическое».

Актуальная версия Планеро доступна по ссылке.

Поделись с друзьями:
Комментарии 2

© планеро.ru