Страницы: 1
RSS
Как скрыть/показать именованный диапазон строк в VBA
 
Прошу прощения за, возможно, дурацкий вопрос

Есть именованный диапазон строк уровня книги
Код
myrows   - > ='лист1'!$15:$21

Как в vba в макросе листа 2 - скрыть или показать этот диапазон?
 
Range("myrows")

Код
range("Mrows").EntireRow.Hidden=true
Изменено: БМВ - 28.10.2019 17:25:05
По вопросам из тем форума, личку не читаю.
 
gribnick75,
Код
sheets("лист1").Rows("15:21").Hidden = True  'скрыть строки
sheets("лист1").Rows("15:21").Hidden = False  'показать строки
 
Либо вот так
Код
Dim myrows As Range
Set myrows = Sheets("лист1").Range(Rows(15), Rows(21))
а потом уже скрывать или раскрывать
Код
myrows.Hidden = True  'скрыть строки
myrows.Hidden = False  'показать строки
 
Hellmaster,
Цитата
gribnick75 написал:
Есть именованный диапазон строк уровня книги
!!!
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
range("Mrows").EntireRow.Hidden=true
Цитата
Hellmaster написал:
myrows.Hidden = True
а в чем тогда разница?
 
В том что Mrows в одном случае это имя уровня книги, которое определили пользователь "через F3"| , а во втором объект Range. Только и всего.
По вопросам из тем форума, личку не читаю.
 
Тогда прошу прощения за незнание. Можно ссылочку, если не сложно, чтобы я изучил этот момент?
 
Ссылочку на что? На Range Object? https://docs.microsoft.com/en-us/office/vba/api/excel.range(object)
Пример 3
там правда не упомянуто про такую форму, но именно это и содержится в имени
Range("Sheet1!10:15")
Изменено: БМВ - 28.10.2019 17:46:22
По вопросам из тем форума, личку не читаю.
 
БМВ,таки я не понял тогда. Я ошибся в задании Range, тем что начал с листа, а не с книги или я ошибся в скрытии строк?
 
Цитата
БМВ написал:
Range("myrows")

Видимо ошибка у меня где-то в другом


На листе 1 есть макрос следующего вида

Код
Private Sub Worksheet_Change(ByVal Target As Range)
   

   
   
   'Subfloor1_1 - ïðèçíàê èñïîëüçóåì èëè íåò íèæíåå ïåðåêðûòèå
   '
   '
   '
   ''
    Dim isSubfloorHouse As Integer
      
     If Target.Address = Range("Subfloor1_1").Address And Target = Range("Subfloor1_1") Then
          MsgBox (1)
          If Range("Subfloor1_1") = "Да" Then
            isSubfloorHouse = 0
            Range("range_subfloor_house").entryRow.Hidden = True
          Else
            Range("range_subfloor_house").entryRow.Hidden = False
            isSubfloorHouse = 1
          End If
        End If
     
End Sub
range_subfloor_house - задана через f3 для Листа 2   ='Лист2'!$15:$21

При срабатывании идет ошибка

Method Range of object - '_Worksheet' failed

как раз на строках Range("range_subfloor_house").entryRows.Hidden = True / False
Изменено: gribnick75 - 28.10.2019 18:19:47
 
Цитата
gribnick75 написал:
Range("range_subfloor_house").entryRows.Hidden = True
Код
entireRow.hidden
 
Область строк определена не 15-21, а задана в имени myrows и может быть другой. моему варианту важно только это имя, что и просил ТС. В вашем случае макрос жестко заточен под номера строк.
По вопросам из тем форума, личку не читаю.
 
Цитата
Hellmaster написал:
entireRow.hidden

поправил уже, результат тот же
 
БМВ, спасибо. Изучу этот момент
 
Эх...  дяденьки простите тупицу )))))))))))

face palm
умудрился 2 синтаксические ошибки сделать а не 1

БМВ - спасибо за помощь


PS тем не менее внутри Sub Worksheet_Change(ByVal Target As Range)  все равно ругается

Пришлось сделать отдельную функцию в модуле и дергать ее.  
Изменено: gribnick75 - 28.10.2019 19:42:14
 
Цитата
gribnick75 написал:
все равно ругается
возможно, надо было так:
Код
Application.Range("range_subfloor_house")
или так:
Код
[range_subfloor_house].Address
или так:
Код
Sheets("Лист2").Range("range_subfloor_house").Address
но с файлом диагностировать причину было бы сподручнее.
Изменено: Дмитрий(The_Prist) Щербаков - 28.10.2019 20:12:17
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Дмитрий(The_Prist) Щербаков написал:
Application.Range("range_subfloor_house")

Так работает, спасибо
Страницы: 1
Наверх