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

Вход

Регистрация

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

 

= Мир MS Excel/Группировка только что нарисованных линий - Мир MS Excel

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

Excel 2013
Добрый день, всем.
Уважаемые гуру экселя, подскажите решение.

У меня есть макрос рисующий между двумя фигурами - линию и два параллельных отрезка, перпендикулярные этой линии.
Для этого надо щелкнуть по одному кружку, а затем по второму кружку.

Как макросом - сгруппировать эти три, только что нарисованные линии - в группу?
К сообщению приложен файл: 45697469.xls (48.0 Kb)
 
Ответить
СообщениеДобрый день, всем.
Уважаемые гуру экселя, подскажите решение.

У меня есть макрос рисующий между двумя фигурами - линию и два параллельных отрезка, перпендикулярные этой линии.
Для этого надо щелкнуть по одному кружку, а затем по второму кружку.

Как макросом - сгруппировать эти три, только что нарисованные линии - в группу?

Автор - OlegSmirnov
Дата добавления - 13.10.2017 в 15:50
Pelena Дата: Пятница, 13.10.2017, 16:44 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19184
Репутация: 4420 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
три, только что нарисованные линии - в группу

Как-то так можно
[vba]
Код
       With ActiveSheet
            .Shapes.Range(Array(.Shapes.Count, .Shapes.Count - 1, .Shapes.Count - 2)).Group
        End With
[/vba]
К сообщению приложен файл: 6528371.xls (58.5 Kb)


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
три, только что нарисованные линии - в группу

Как-то так можно
[vba]
Код
       With ActiveSheet
            .Shapes.Range(Array(.Shapes.Count, .Shapes.Count - 1, .Shapes.Count - 2)).Group
        End With
[/vba]

Автор - Pelena
Дата добавления - 13.10.2017 в 16:44
_Boroda_ Дата: Пятница, 13.10.2017, 16:49 | Сообщение № 3
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Линию s3 Вы шейпом обозвали, обзовите и две других тоже. А потом группируйте
[vba]
Код
Private Const secondsWait = 5

Private s1 As Shape, s2 As Shape, s3 As Shape, s4 As Shape, s5 As Shape, c As New Collection ': Const secondsWait = 5

Private Sub CreateArrow()
    If s1 Is Nothing Then
       Set s1 = ActiveSheet.Shapes(Application.Caller)
    Else
        Set s2 = ActiveSheet.Shapes(Application.Caller)
        x1! = s1.Left + s1.Width / 2: y1! = s1.Top + s1.Height / 2
        x2! = s2.Left + s2.Width / 2: y2! = s2.Top + s2.Height / 2
        Set s3 = ActiveSheet.Shapes.AddLine(x1!, y1!, x2!, y2!)
        With s3.Line
            .EndArrowheadStyle = msoArrowheadTriangle
            .Weight = 2
            .ForeColor.RGB = vbRed
        End With
        Set s4 = ActiveSheet.Shapes.AddLine(x1 - (y2 - y1) / 4, y1 + (x2 - x1) / 4, x1 + (y2 - y1) / 4, y1 - (x2 - x1) / 4)
        Set s5 = ActiveSheet.Shapes.AddLine(x2 - (y2 - y1) / 4, y2 + (x2 - x1) / 4, x2 + (y2 - y1) / 4, y2 - (x2 - x1) / 4)
        ActiveSheet.Shapes.Range(Array(s3.Name, s4.Name, s5.Name)).Group
        c.Add s3: Set s1 = Nothing ': Set s2 = Nothing
    End If
End Sub
[/vba]
К сообщению приложен файл: 45697469_2.xls (75.0 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЛинию s3 Вы шейпом обозвали, обзовите и две других тоже. А потом группируйте
[vba]
Код
Private Const secondsWait = 5

Private s1 As Shape, s2 As Shape, s3 As Shape, s4 As Shape, s5 As Shape, c As New Collection ': Const secondsWait = 5

Private Sub CreateArrow()
    If s1 Is Nothing Then
       Set s1 = ActiveSheet.Shapes(Application.Caller)
    Else
        Set s2 = ActiveSheet.Shapes(Application.Caller)
        x1! = s1.Left + s1.Width / 2: y1! = s1.Top + s1.Height / 2
        x2! = s2.Left + s2.Width / 2: y2! = s2.Top + s2.Height / 2
        Set s3 = ActiveSheet.Shapes.AddLine(x1!, y1!, x2!, y2!)
        With s3.Line
            .EndArrowheadStyle = msoArrowheadTriangle
            .Weight = 2
            .ForeColor.RGB = vbRed
        End With
        Set s4 = ActiveSheet.Shapes.AddLine(x1 - (y2 - y1) / 4, y1 + (x2 - x1) / 4, x1 + (y2 - y1) / 4, y1 - (x2 - x1) / 4)
        Set s5 = ActiveSheet.Shapes.AddLine(x2 - (y2 - y1) / 4, y2 + (x2 - x1) / 4, x2 + (y2 - y1) / 4, y2 - (x2 - x1) / 4)
        ActiveSheet.Shapes.Range(Array(s3.Name, s4.Name, s5.Name)).Group
        c.Add s3: Set s1 = Nothing ': Set s2 = Nothing
    End If
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 13.10.2017 в 16:49
OlegSmirnov Дата: Пятница, 13.10.2017, 17:06 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Pelena, _Boroda_, спасибо.
Оба варианта работают.
 
Ответить
СообщениеPelena, _Boroda_, спасибо.
Оба варианта работают.

Автор - OlegSmirnov
Дата добавления - 13.10.2017 в 17:06
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Группировка только что нарисованных линий (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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