Скрытие строк по условию

Автор Посетитель 29.02.2024, 29 февраля 2024, 10:39

Посетитель 29.02.2024

Добрый день!

Написал макрос и привязал его к выпадающему списку на скрытие строк по условию:
если в определенной ячейке меняются значения 1, то нужно скрывать строки, а если значение 2 то раскрывать их.

Но скрываемые строки фиксированы, и при добавлении строк выше 63 макрос не работает.
Думал присвоить значение диапазону ячеек под тип "ActiveSheet.Range("NP").Interior.Color = vbGreen" где можно закрасить названный диапазон, но так не работает.

подскажите как победить ?
заранее спасибо!

Sub Макрос1()
 
  If Cells(6, 110).Value = 1 Then
      Rows("63:67").Hidden = True
  Else
      Rows("63:67").Hidden = False
  End If
     
End Sub

Администратор

Какие строки надо скрывать?
Как мне понять, с какой по какую строку надо скрывать?

Посетитель 29.02.2024

5 строк в данный момент они 63:67, но при добавлении строк свыше 63ей строки соответственно эти 5 строк уходят еще ниже и макрос перестает работать

Администратор

Всё время нужно скрывать только пять строк: не меньше, не больше?

Посетитель 29.02.2024

да скрывать только 5 определенных строк


Администратор

Чтобы отслеживать перемещение заданного диапазона, можно ему назначить имя и затем это имя можно указать в коде макроса. При добавлении / удалении строк за пределами этого имени, диапазон имени не меняется.
Имя можно назначить так: выделите строки, которые надо скрывать, в поле Адрес (оно находится слева от строки формул) напечатайте без пробела какой-нибудь текст, например: ДляСкрытия.

Затем в коде это имя можно использовать так:

Sub Макрос1()

  If Cells(1, 1).Value = 1 Then
      Range("ДляСкрытия").EntireRow.Hidden = True
  Else
      Range("ДляСкрытия").EntireRow.Hidden = False
  End If
   
End Sub

Посетитель 29.02.2024

я что-то под тип такого же начал делать

    Dim j As Integer
    Dim k As String
    ' присвоил имя ячейке Hiddenk и скрывать 5 строк ниже нее
        j = Range("HiddenK").Row
        k = CStr(j) + ":" + CStr(j + 5)
       

        If Cells(6, 110).Value = 1 Then
            Rows(k).Hidden = True
        Else
            Rows(k).Hidden = False
        End If

Администратор

Вам моё предложение подошло или вопрос до конца не решён?

Посетитель 29.02.2024

Вопрос решен. Тему можно закрывать. Спасибо большое!