Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1,073
Default rotation of an arrow created by an drawing object

On Dec 25 2007, 3:42 pm, TONY wrote:
Below is a macro that first creates "cross hairs" on the spread sheet No
problem her. In addition a 3rd line is created with an arrow head no problem
here either.

I can select the arrow open the format boxx and change it's rotation with no
problem, however I can not from within the program itself. The arrow moves
to aprox 45 degrees and does not at all.

Sub Macro20()
'
' Macro20 Macro
' Macro recorded 12/24/2007 by Anthony Keefe
'
cSize = 50
Range("a1").Select

Set myHz = ActiveSheet.Shapes.AddLine(0.075, Application.UsableHeight * 0.5,
Application.UsableWidth, Application.UsableHeight * 0.5)
Set myv = ActiveSheet.Shapes.AddLine(Application.UsableWidth * 0.5, 0.075,
Application.UsableWidth * 0.5, Application.UsableHeight)

Set dial = ActiveSheet.Shapes.AddLine(Application.UsableWidth * 0.5 -
cSize, Application.UsableHeight * 0.5 + cSize, _
(Application.UsableWidth * 0.5 +
cSize), (Application.UsableHeight * 0.5) - cSize)

With dial.Line
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadLength = msoArrowheadLengthMedium
.EndArrowheadWidth = msoArrowheadWidthMedium

End With
With dial

.Rotation = 0# ' Reset arrow to 0
.Rotation = 1#
.Rotation = 2#
End With

myHz.delete
myv.delete
dial.delete

End Sub


Hi Tony,

I'm not sure what it is that you're trying to do, but I'm guessing you
want to see that arrow rotate. You're original code will make the
arrow rotate, the only important thing missing is DoEvents. To
illustrate, below is your original code with a Do Loop thrown in with
an incrementing Single (K). You can alter the rotation speed by
increasing the increment size eg K = K + 2 is faster and K = K + 0.5
is slower.

All I have done is added "Dim K as Single" at the top and replaced...

..Rotation = 0# ' Reset arrow to 0
.Rotation = 1#
.Rotation = 2#

with...

Do While K < 720 'Two revolutions
K = K + 1
.Rotation = K
DoEvents
Loop

Sub Macro20()
'
' Macro20 Macro
' Macro recorded 12/24/2007 by Anthony Keefe
'
Dim K As Single
cSize = 50
Range("a1").Select

Set myHz = ActiveSheet.Shapes.AddLine(0.075, Application.UsableHeight
* 0.5, _
Application.UsableWidth, Application.UsableHeight * 0.5)
Set myv = ActiveSheet.Shapes.AddLine(Application.UsableWidth * 0.5,
0.075, _
Application.UsableWidth * 0.5, Application.UsableHeight)

Set dial = ActiveSheet.Shapes.AddLine(Application.UsableWidth * 0.5 -
_
cSize, Application.UsableHeight * 0.5 + cSize, _
(Application.UsableWidth * 0.5
+ _
cSize), (Application.UsableHeight * 0.5) - cSize)

With dial.Line
.EndArrowheadStyle = msoArrowheadTriangle
.EndArrowheadLength = msoArrowheadLengthMedium
.EndArrowheadWidth = msoArrowheadWidthMedium

End With
With dial
Do While K < 720 'Two revolutions
K = K + 1
.Rotation = K
DoEvents 'this enable visible rotation of the arrow
'Doesn't work as well on a Mac (OSX), where you have to
'continually move the mouse to achieve visible motion,
which sucks.
Loop
End With

myHz.Delete
myv.Delete
dial.Delete

End Sub

Ken Johnson

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Selecting Drawing Object By Name Zone Excel Programming 3 December 22nd 06 08:21 PM
Floating Drawing Object CLR Excel Programming 9 June 25th 06 03:40 AM
Drawing Object in a Userform Zone Excel Programming 4 May 9th 06 08:27 PM
Drawing Object Shawn Excel Programming 2 March 2nd 05 03:04 PM
Drawing object references JASon Excel Programming 2 August 28th 03 10:49 PM


All times are GMT +1. The time now is 03:54 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"