Здравствуйте. Возник небольшой вопрос по начальной отметке координат - на листе экселя.
Имеется таблица с координатами точек. И есть макрос - который за начальную отметку расстановки этих точек на листе - выбирает не верхний левый угол листа, а верхний левый угол фигуры "yAxis".
Скажите - как назначить для начала координат - не верхний левый угол фигуры "yAxis", а верхний левый угол фигуры "Овал 7", но так, чтобы ось Y здесь была бы направлена вверх ?
Пытался сам это сделать, но что-то у меня не получилось. Не хочет макрос - переназначать точку начала координат - с "yAxis", на другую фигуру.
Здравствуйте. Возник небольшой вопрос по начальной отметке координат - на листе экселя.
Имеется таблица с координатами точек. И есть макрос - который за начальную отметку расстановки этих точек на листе - выбирает не верхний левый угол листа, а верхний левый угол фигуры "yAxis".
Скажите - как назначить для начала координат - не верхний левый угол фигуры "yAxis", а верхний левый угол фигуры "Овал 7", но так, чтобы ось Y здесь была бы направлена вверх ?
Пытался сам это сделать, но что-то у меня не получилось. Не хочет макрос - переназначать точку начала координат - с "yAxis", на другую фигуру.cerber412
Public Sub drawPoints() Dim xyTable As ListObject, xyData As Variant, iPoint As Long Dim x0 As Double, y0 As Double Dim xyPoint As ShapeNode, drawSheet As Worksheet, pPoint As Shape Set drawSheet = ActiveSheet With drawSheet.Shapes("Овал 7") x0 = .Left + .Width / 2 y0 = .Top + .Height / 2 End With Set xyTable = drawSheet.ListObjects("tpoints") xyData = xyTable.DataBodyRange.Value Set xyPoint = drawSheet.Shapes("yAxis").Nodes(1) For iPoint = 1 To UBound(xyData) ' Set pPoint = drawSheet.Shapes.AddShape(msoShapeOval, _ ' xyPoint.Points(1, 1) - 0.5 + xyData(iPoint, 1), _ ' xyPoint.Points(1, 2) - 0.5 + xyData(iPoint, 2), 1, 1) Set pPoint = drawSheet.Shapes.AddShape(msoShapeOval, _ x0 + xyData(iPoint, 1), _ y0 - xyData(iPoint, 2), 1, 1) pPoint.Name = "myPoint" & CStr(iPoint) Next End Sub
[/vba]
[vba]
Код
Option Explicit
Public Sub drawPoints() Dim xyTable As ListObject, xyData As Variant, iPoint As Long Dim x0 As Double, y0 As Double Dim xyPoint As ShapeNode, drawSheet As Worksheet, pPoint As Shape Set drawSheet = ActiveSheet With drawSheet.Shapes("Овал 7") x0 = .Left + .Width / 2 y0 = .Top + .Height / 2 End With Set xyTable = drawSheet.ListObjects("tpoints") xyData = xyTable.DataBodyRange.Value Set xyPoint = drawSheet.Shapes("yAxis").Nodes(1) For iPoint = 1 To UBound(xyData) ' Set pPoint = drawSheet.Shapes.AddShape(msoShapeOval, _ ' xyPoint.Points(1, 1) - 0.5 + xyData(iPoint, 1), _ ' xyPoint.Points(1, 2) - 0.5 + xyData(iPoint, 2), 1, 1) Set pPoint = drawSheet.Shapes.AddShape(msoShapeOval, _ x0 + xyData(iPoint, 1), _ y0 - xyData(iPoint, 2), 1, 1) pPoint.Name = "myPoint" & CStr(iPoint) Next End Sub