OlegSmirnov
Дата: Пятница, 13.10.2017, 15:50 |
Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Добрый день, всем. Уважаемые гуру экселя, подскажите решение. У меня есть макрос рисующий между двумя фигурами - линию и два параллельных отрезка, перпендикулярные этой линии. Для этого надо щелкнуть по одному кружку, а затем по второму кружку. Как макросом - сгруппировать эти три, только что нарисованные линии - в группу?
Добрый день, всем. Уважаемые гуру экселя, подскажите решение. У меня есть макрос рисующий между двумя фигурами - линию и два параллельных отрезка, перпендикулярные этой линии. Для этого надо щелкнуть по одному кружку, а затем по второму кружку. Как макросом - сгруппировать эти три, только что нарисованные линии - в группу? OlegSmirnov
Ответить
Сообщение Добрый день, всем. Уважаемые гуру экселя, подскажите решение. У меня есть макрос рисующий между двумя фигурами - линию и два параллельных отрезка, перпендикулярные этой линии. Для этого надо щелкнуть по одному кружку, а затем по второму кружку. Как макросом - сгруппировать эти три, только что нарисованные линии - в группу? Автор - 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]
Здравствуйте.три, только что нарисованные линии - в группу
Как-то так можно [vba]Код
With ActiveSheet .Shapes.Range(Array(.Shapes.Count, .Shapes.Count - 1, .Shapes.Count - 2)).Group End With
[/vba] Pelena
"Черт возьми, Холмс! Но как??!!" Ю-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]
Линию 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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
Ответить
Сообщение Pelena, _Boroda_, спасибо. Оба варианта работают. Автор - OlegSmirnov Дата добавления - 13.10.2017 в 17:06