ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Line Start and End Coordinates (https://www.excelbanter.com/excel-programming/381936-line-start-end-coordinates.html)

Zone[_2_]

Line Start and End Coordinates
 
I have a line on the screen (shape). I would like to select it and get the
starting and ending coordinates of the line. TIA, James



Kari J Keinonen[_2_]

Line Start and End Coordinates
 
Hi!

"Zone" wrote:

I have a line on the screen (shape). I would like to select it and get the
starting and ending coordinates of the line. TIA, James


I hope that next code help you a little.

ActiveSheet.Shapes(1).Select 'if you have only one line
Range("A1").Value = Selection.ShapeRange.Item(1).Left
Range("A2").Value = Selection.ShapeRange.Item(1).Width
Range("A3").Value = Selection.ShapeRange.Item(1).Top
Range("A4").Value = Selection.ShapeRange.Item(1).Height

Regards,
Kari J Keinonen

Peter T

Line Start and End Coordinates
 
The "flips" help work out which pair of corners of the imaginary rectangle,
that surround the line, represent the correct diagonal. (I tried to make
that short!)

Sub test()
Dim bHflip As Boolean, bVflip As Boolean
Dim nBegin As Long, nEnd As Long
Dim shp As Shape
Dim aC(1 To 4, 1 To 2) As Double

Set shp = ActiveSheet.Shapes("Line 1")
With shp
aC(1, 1) = .Left: aC(1, 2) = .Top
aC(2, 1) = .Left + .Width: aC(2, 2) = .Top
aC(3, 1) = .Left: aC(3, 2) = .Top + .Height
aC(4, 1) = .Left + .Width: aC(4, 2) = .Top + .Height

bHflip = .HorizontalFlip
bVflip = .VerticalFlip
End With

If bHflip = bVflip Then
If bVflip = False Then
' down to right
nBegin = 1: nEnd = 4
Else
' up to left
nBegin = 4: nEnd = 1
End If
ElseIf bHflip = False Then
' up to right
nBegin = 3: nEnd = 2
Else
' down to left
nBegin = 2: nEnd = 3
End If

Debug.Print "Begin X:Y", "End X:Y"
Debug.Print aC(nBegin, 1); aC(nBegin, 2), aC(nEnd, 1); aC(nEnd, 2)

End Sub

Regards,
Peter T


"Zone" wrote in message
...
I have a line on the screen (shape). I would like to select it and get

the
starting and ending coordinates of the line. TIA, James





Zone[_2_]

Line Start and End Coordinates
 
Thanks very much, Peter and Kari. Your replies are very helpful to me.
James

"Peter T" <peter_t@discussions wrote in message
...
The "flips" help work out which pair of corners of the imaginary
rectangle,
that surround the line, represent the correct diagonal. (I tried to make
that short!)

Sub test()
Dim bHflip As Boolean, bVflip As Boolean
Dim nBegin As Long, nEnd As Long
Dim shp As Shape
Dim aC(1 To 4, 1 To 2) As Double

Set shp = ActiveSheet.Shapes("Line 1")
With shp
aC(1, 1) = .Left: aC(1, 2) = .Top
aC(2, 1) = .Left + .Width: aC(2, 2) = .Top
aC(3, 1) = .Left: aC(3, 2) = .Top + .Height
aC(4, 1) = .Left + .Width: aC(4, 2) = .Top + .Height

bHflip = .HorizontalFlip
bVflip = .VerticalFlip
End With

If bHflip = bVflip Then
If bVflip = False Then
' down to right
nBegin = 1: nEnd = 4
Else
' up to left
nBegin = 4: nEnd = 1
End If
ElseIf bHflip = False Then
' up to right
nBegin = 3: nEnd = 2
Else
' down to left
nBegin = 2: nEnd = 3
End If

Debug.Print "Begin X:Y", "End X:Y"
Debug.Print aC(nBegin, 1); aC(nBegin, 2), aC(nEnd, 1); aC(nEnd, 2)

End Sub

Regards,
Peter T


"Zone" wrote in message
...
I have a line on the screen (shape). I would like to select it and get

the
starting and ending coordinates of the line. TIA, James








All times are GMT +1. The time now is 11:12 AM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com