Private Sub Workbook_SheetActivate(ByVal Sh As Object)
' Ваш макрос будет запускаться при каждом изменении активного листа
ActiveCell.Show 'активная ячейка в зоне видимости
End Sub
Sub PeopleButton()
'
' PeopleButton Макрос
' Список активных людей в доме, фильтрует данные прибывших и не уехавших
Sheets("Список").Select
On Error Resume Next: ActiveSheet.ShowAllData: On Error GoTo 0
'добавил замену слова архив на пусто
Columns("R:S").Replace What:="архив", Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula
ActiveSheet.ListObjects("Список").Range.AutoFilter Field:=19, Criteria1:= _
"="
ActiveSheet.ListObjects("Список").Range.AutoFilter Field:=18, Criteria1:= _
"="
ActiveWindow.SmallScroll Down:=-4
Range("B2").Select
End Sub
Sub Arhiv27()
' Фильтр скрывает строки списка, кроме тех где есть значения в столбце "уехал" и Убыл без предупр""
Sheets("Список").Select
On Error Resume Next: ActiveSheet.ShowAllData: On Error GoTo 0
LastRow = Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 'поиск самой последней пустой строки в таблице
For i = 2 To LastRow 'цикл до последней пустой строки
If Cells(i, 18) = "" And Cells(i, 19) = "" Then 'по условию в ячеках столбцов R и S пусто
Cells(i, 19) = "архив" 'пишем "архив"
End If
Next
ActiveSheet.ListObjects("Список").Range.AutoFilter Field:=19, Criteria1:=("<>архив") ' Фильтр скрывает строки с "архив" используя текстовый филтр... не равно...архив
End Sub
Sub Макрос1()
n = Selection.Rows.Count 'Последняя строка по счету выделенном диапазоне
k = 0 'Счетчик количества добавленных строк
For i = 1 To n / 3 'цикл
r = Selection.Row + 3 * i '№ строки на листе (первой строки по счету в выделенном диапазоне-актив.Ячейка "ActiveCell"+3*i)
Rows(r + k).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'добавляем строку
k = k + 1 'Счетчик количества добавленных строк ,можно написать k=i
Next 'повторяем цикл
End Sub
Может этот вариант будет удобней в работе (добавил выход из процедуры при наличии ошибки), но лекарство от ошибки найти не получилось так как и ошибку поймать не смог. Предположения из наблюдений: Если в строке № 1048576 (самая последняя на листе) были данные но потом их удалили( смотрим -пустая строка) Excel начинает ругаться...
Sub Макрос1()
Cells(2, 4).Activate
r = Columns(4).Find(What:="Добавить", SearchDirection:=xlPrevious).Row
Do While rN < r
Columns(4).Find(What:="Добавить", After:=ActiveCell).Activate
For i = -3 To 3
ActiveCell.Offset(i, -1) = ActiveCell.Offset(0, -1).Value + i
ActiveCell.Offset(i, -2) = ActiveCell.Offset(0, -2)
Next
rN = ActiveCell.Row
Loop
End Sub