Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Открытие/скрытие строк одной кнопкой - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Открытие/скрытие строк одной кнопкой (Макросы/Sub)
Открытие/скрытие строк одной кнопкой
Meissen Дата: Среда, 08.04.2015, 15:13 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Всем привет. Помогите с макросом пожалуйста......я не спец, но очень надо, поэтому прошу помощи.
Надо чтобы нажатием на одну и туже кнопку открывались и скрывались определенные строки.......Как это сделать?
К сообщению приложен файл: 0093572.xls (64.0 Kb)
 
Ответить
СообщениеВсем привет. Помогите с макросом пожалуйста......я не спец, но очень надо, поэтому прошу помощи.
Надо чтобы нажатием на одну и туже кнопку открывались и скрывались определенные строки.......Как это сделать?

Автор - Meissen
Дата добавления - 08.04.2015 в 15:13
_Boroda_ Дата: Среда, 08.04.2015, 15:18 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Для кнопки 118
[vba]
Код
Sub Кнопка118_Щелчок()
      Rows("6:14").EntireRow.Hidden = Not (Rows("6:14").EntireRow.Hidden)
End Sub
[/vba]
Остальные аналогично
К сообщению приложен файл: 0093572_1.xls (69.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДля кнопки 118
[vba]
Код
Sub Кнопка118_Щелчок()
      Rows("6:14").EntireRow.Hidden = Not (Rows("6:14").EntireRow.Hidden)
End Sub
[/vba]
Остальные аналогично

Автор - _Boroda_
Дата добавления - 08.04.2015 в 15:18
Meissen Дата: Среда, 08.04.2015, 15:22 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 62
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, супер, спасибо!!!!!
 
Ответить
Сообщение_Boroda_, супер, спасибо!!!!!

Автор - Meissen
Дата добавления - 08.04.2015 в 15:22
Roman777 Дата: Среда, 08.04.2015, 15:24 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Meissen, Привет, я конечно, оч неграммотный, но твой код вот так переделал, вроде работает)))
[vba]
Код
Sub Кнопка118_Щелчок()
    Dim q As Boolean

       Rows("6:15").Select
       Range("A15").Activate
       q = Selection.EntireRow.Hidden
    q = Not q
       Rows("6:15").Select
       Range("A15").Activate
       Selection.EntireRow.Hidden = q
End Sub
[/vba]
Во, у Boroda даж лучше вышло)))


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Среда, 08.04.2015, 15:25
 
Ответить
СообщениеMeissen, Привет, я конечно, оч неграммотный, но твой код вот так переделал, вроде работает)))
[vba]
Код
Sub Кнопка118_Щелчок()
    Dim q As Boolean

       Rows("6:15").Select
       Range("A15").Activate
       q = Selection.EntireRow.Hidden
    q = Not q
       Rows("6:15").Select
       Range("A15").Activate
       Selection.EntireRow.Hidden = q
End Sub
[/vba]
Во, у Boroda даж лучше вышло)))

Автор - Roman777
Дата добавления - 08.04.2015 в 15:24
KSV Дата: Среда, 08.04.2015, 16:33 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Во, у Boroda даж лучше вышло)))

понятное дело!
он же руками писал, а не макрорекордером... :)
код Александра можно чуть оптимизировать:
[vba]
Код
Sub Кнопка118_Щелчок()
     With Rows("6:14").EntireRow
         .Hidden = Not .Hidden
     End With
End Sub
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение
Во, у Boroda даж лучше вышло)))

понятное дело!
он же руками писал, а не макрорекордером... :)
код Александра можно чуть оптимизировать:
[vba]
Код
Sub Кнопка118_Щелчок()
     With Rows("6:14").EntireRow
         .Hidden = Not .Hidden
     End With
End Sub
[/vba]

Автор - KSV
Дата добавления - 08.04.2015 в 16:33
Roman777 Дата: Четверг, 09.04.2015, 09:08 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Ну да, я вообще о функции ".EntireRow.Hidden" пока не знал...) Подскажите, пожалуйста, а в чем конкретно оптимизация то получилась, ато по мне так одинаково выглядит (у _Boroda_, даже покороче вышло, всего в 1 строчку))) То что не пришлось 2 раза писать:
[vba]
Код
Rows("6:14").EntireRow.Hidden
[/vba] ?


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Ну да, я вообще о функции ".EntireRow.Hidden" пока не знал...) Подскажите, пожалуйста, а в чем конкретно оптимизация то получилась, ато по мне так одинаково выглядит (у _Boroda_, даже покороче вышло, всего в 1 строчку))) То что не пришлось 2 раза писать:
[vba]
Код
Rows("6:14").EntireRow.Hidden
[/vba] ?

Автор - Roman777
Дата добавления - 09.04.2015 в 09:08
_Boroda_ Дата: Четверг, 09.04.2015, 09:46 | Сообщение № 7
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Длинна кода вовсе не показатель его эффективности. Бывает, что как раз наоборот. Но не всегда.
Оптимизация в том, что мы один раз смотрим на скрытие строки 6 - скрыта она или нет.
На самом деле, With - End With нужно и удобно использовать в том случае, когда у нас много операций, производимых с одним и тем же диапазоном (в Вашем случае), одной фигурой и т.д. (вариантов может быть много).
Для больших объемов и/или для работы со многими показателями внутри With это может дать довольно существенную экономию. В Вашем же примере это не дает практически ничего, кроме, разве что, того, что Вы заинтересовались, спросили, получили ответ, почитали самостоятельно и, возможно, будете пользоваться этим дальше уже там, где это действительно необходимо.
А иногда With не только полезно, но и просто удобно - можно вместо
[vba]
Код
            Sheets("Лист1").Range("A1") = 1
              Sheets("Лист1").Range("A10") = 1
              Sheets("Лист1").Range("A100") = 1
[/vba]
написать так
[vba]
Код
            With Sheets("Лист1")
                  .Range("A1") = 1
                  .Range("A10") = 1
                  .Range("A100") = 1
              End With
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеДлинна кода вовсе не показатель его эффективности. Бывает, что как раз наоборот. Но не всегда.
Оптимизация в том, что мы один раз смотрим на скрытие строки 6 - скрыта она или нет.
На самом деле, With - End With нужно и удобно использовать в том случае, когда у нас много операций, производимых с одним и тем же диапазоном (в Вашем случае), одной фигурой и т.д. (вариантов может быть много).
Для больших объемов и/или для работы со многими показателями внутри With это может дать довольно существенную экономию. В Вашем же примере это не дает практически ничего, кроме, разве что, того, что Вы заинтересовались, спросили, получили ответ, почитали самостоятельно и, возможно, будете пользоваться этим дальше уже там, где это действительно необходимо.
А иногда With не только полезно, но и просто удобно - можно вместо
[vba]
Код
            Sheets("Лист1").Range("A1") = 1
              Sheets("Лист1").Range("A10") = 1
              Sheets("Лист1").Range("A100") = 1
[/vba]
написать так
[vba]
Код
            With Sheets("Лист1")
                  .Range("A1") = 1
                  .Range("A10") = 1
                  .Range("A100") = 1
              End With
[/vba]

Автор - _Boroda_
Дата добавления - 09.04.2015 в 09:46
KSV Дата: Четверг, 09.04.2015, 09:57 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Hidden - это не функция, а свойство объекта EntireRow.
То что не пришлось 2 раза писать

Да, на мой взгляд, так более читабельно и в случае необходимости изменения диапазона, менять придется только в одном месте.
По скорости, по-идее, прирост должен быть, т.к. не тратится время на получение ссылки на объект EntireRow второй раз (хотя, это тоже зависит от транслятора), но оно настолько мизерно, что им можно пренебречь...
Основное, это то, что короткая запись .Hidden = Not .Hidden более читабельна. (опять же, это только мое мнение)


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
СообщениеHidden - это не функция, а свойство объекта EntireRow.
То что не пришлось 2 раза писать

Да, на мой взгляд, так более читабельно и в случае необходимости изменения диапазона, менять придется только в одном месте.
По скорости, по-идее, прирост должен быть, т.к. не тратится время на получение ссылки на объект EntireRow второй раз (хотя, это тоже зависит от транслятора), но оно настолько мизерно, что им можно пренебречь...
Основное, это то, что короткая запись .Hidden = Not .Hidden более читабельна. (опять же, это только мое мнение)

Автор - KSV
Дата добавления - 09.04.2015 в 09:57
Roman777 Дата: Четверг, 09.04.2015, 10:21 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
_Boroda_, KSV, Спасибо за ответы!


Много чего не знаю!!!!
 
Ответить
Сообщение_Boroda_, KSV, Спасибо за ответы!

Автор - Roman777
Дата добавления - 09.04.2015 в 10:21
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Открытие/скрытие строк одной кнопкой (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!