Страницы: 1
RSS
Скрытие строк с помощью VBA, Не могу найти подходящий макрос для скрытия 2 -х строк
 
Здравствуйте, есть подходящий работающий макрос (нашел у Вас на форуме) для отображения строк, необходимо решить обратную задачу, что бы в обратном порядке скрывало по 2 строки с 48-ой до 19 -ую, не могу понять как это сделать и ничего подобного не нашел

Код
Sub ДобСТр()
    Static i As Integer
    i = IIf(i = 0, 19, i + 2)
    Rows(19 & ":" & i + 1).Hidden = False
    If i > 48 Then
        MsgBox ("Больше ввести нельзя")
    End If
End Sub
Изменено: AlexNaranovich - 12.08.2026 15:07:36 (не верные данные макроса)
 
Здравствуйте.
Можете показать пример того, что есть и того что нужно получить. Не понятно какие строки скрывать. Какие именно 2 строки с 48 по 19 строку скрывать?
Изменено: Aлeкceй - 12.08.2026 15:20:29
 
Да, с 48-ой по 19-ю по две строки
 
Цитата
AlexNaranovich написал: что бы в обратном порядке скрывало
В таком случае и цикл нужен в обратном порядке - с 48 по 19
Цитата
Да, с 48-ой по 19-ю по две строки
Это как? Допустим скрыли 47:48. Дальше что? Какие строки скрыть?

Файл-пример приложите (Excel). Как есть - Как надо
?
Код
Sub Hidden2RowsRev()
Dim I&
For I = 48 To 19 Step -4
  Rows(I - 1).Resize(2).EntireRow.Hidden = True
Next
End Sub
Изменено: Sanja - 12.08.2026 15:56:11
Согласие есть продукт при полном непротивлении сторон
 
так?
Код
Sub prgHideRows()
  Dim sh As Worksheet, i As Integer
  Dim iFirstRow As Integer, iLastRow As Integer
  Set sh = ThisWorkbook.Sheets("Sheet1")
  iFirstRow = 19
  iLastRow = 48
  For i = iLastRow To iFirstRow Step -4
    sh.Rows(i & ":" & i - 1).Hidden = True
  Next i
End Sub

 
Читать снизу вверх
 
В сообщении #4 читается снизу вверх. Что не так?
 
№4
Этот код скрывает 2 строки снизу, потом две пропускает, и потом снова 2 строки скрывает, так и чередуется до 19 - ой строчки,  а надо по 2 строки по порядку скрывать
 
AlexNaranovich, Добрый вечер. Скрывать макросом по две строки снизу сделать несложно. Но есть вопрос..
- Пока это происходит на этом листе все понятно. А что должно произойти если перейти на другой лист, а потом вернуться на него, или просто выйти из книги?
Варианты;
- показать все скрытые строки,
- запомнить положение последней скрытой строки, чтобы в дальнейшем иметь возможность корректно скрывать строки не с 48 строки, а с последней нескрытой строки.
Могут потребоваться какие то глобальные переменные, где то на листе нужно сохранять номер строки, а также использовать событийные макросы.  
Изменено: Старичок - 12.08.2026 19:04:15
 
может такой вариант подойдет?
Код
Sub prgHideRows(firstRow As Long, lastRow As Long)
  Dim sh As Worksheet, i As Long
  
  Set sh = ThisWorkbook.Sheets("Лист3") ' "Лист3" замените на имя своего листа
  For i = lastRow To firstRow Step -2
    If Not sh.Rows(i & ":" & i - 1).Hidden Then
      sh.Rows(i & ":" & i - 1).Hidden = True
      Exit For
    End If
  Next i
  
End Sub


'Вот так вызывать процедуру которая скрывает строки
Sub test()
  prgHideRows 19, 48  
End Sub

 
Спасибо большое, всё работает 👍
Страницы: 1
Читают тему
Наверх