Страницы: 1
RSS
Скрыть\отобразить группу фигур одной кнопкой
 
Всем привет!
Есть две группы фигур, нужен макрос который: при нажатии на кнопку скроет группу фигур и при повторном нажатии, на эту же кнопку, отобразит эту же группу фигур?
 
Если по-быстрому, то просто объединил нужные фигуры в группы, посмотрел их названия и размеры и вот так
Код
Private Sub CommandButton1_Click()
    With ActiveSheet.Shapes.Range(Array("Group 5"))
        .Height = -216 * (.Height = 0)
        .Width = -123 * (.Width = 0)
    End With
End Sub

Не сильно классный способ, зато много думать не нужно )))))
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, спасибо! как понимаю мы изменяем размер группы форм формы до нуля, и соответственно мне нужно для каждой группы формы определять размер, в случае если они разные?
Изменено: Adamm - 12.08.2022 11:03:13
 
Если не объединять, то типа так
Код
Public ONOFF As Boolean

Sub Кнопка4_Щелчок()
If ONOFF Then
    ONOFF = False
    Sheets("Лист1").Shapes("Кнопка 4").DrawingObject.Characters.Text = "Скрыть"
    Sheets("Лист1").Shapes("Прямоугольник: скругленные углы 1").Visible = True
' тут перечисляете элементы которые хотите скрыть/показать

Else
    ONOFF = True
    Sheets("Лист1").Shapes("Кнопка 4").DrawingObject.Characters.Text = "Показать"
    Sheets("Лист1").Shapes("Прямоугольник: скругленные углы 1").Visible = False
' тут перечисляете элементы которые хотите скрыть/показать

End If
End Sub
 
tutochkin, спасибо! В итоге объединил оба кода, через группировку код короче получается!
Изменено: Adamm - 12.08.2022 11:16:35
 
Можно при восстановлении размеров поэкспериментировать с привязкой к границам диапазонов. Ну, например, мы группу кнопок расположили в пределах диапазона В2:С5
Потом объединили их в группу, задали группе нулевые размеры.
Потом, когда надо развернуть их обратно, можно попробовать так:
Код
    With ActiveSheet.Shapes.Range(Array("Group 5"))
        .Height = Range("B2:C5").Height
        .Width = Range("B2:C5").Width
        .Top = Range("B2:C5").Top
        .Left =Range("B2:C5").Left 
    End With

Вроде как-то так. :)
Кому решение нужно - тот пример и рисует.
 
Пытливый, ок, спасибо!
 
Цитата
Adamm написал:
формы определять размер, в случае если они разные?
Да, это несложно. Включаете запись макроса, немного, на 0,01 изменяете размеры, выключаете запись макроса. Смотрите, что записалось - там как раз размеры и будут
Скажи мне, кудесник, любимец ба’гов...
 
_Boroda_, ок, спс!
 
Народ, никак не вкурю, зачем вы в размеры полезли?
Код
Sub qq()
    With ActiveSheet.Shapes.Range(Array("Group 6"))
    .Visible = Not .Visible
    End With
End Sub

Код
Sub qqq()
    With ActiveSheet.Shapes.Range(Array("Прямоугольник: скругленные углы 1", "Прямоугольник: скругленные углы 3"))
    .Visible = Not .Visible
    End With
End Sub
Изменено: RAN - 12.08.2022 14:02:37
Страницы: 1
Наверх