This code follows the clock face code. It also makes use of the pif() function, my local version of Pi() or Application.WorksheetFunction.Pi().
' Draw the hands
' (Left Top Width Height)
ActiveSheet.Shapes.AddShape(msoShapeDiamond, xCenter - MinHandWid / 2, YCenter - MinHandLen, MinHandWid, MinHandLen). _
Select
Selection.ShapeRange.Name = "Minute"
ActiveSheet.Shapes.AddShape(msoShapeDiamond, xCenter - HrHandWid / 2, YCenter - HrHandLen, HrHandWid, HrHandLen). _
Select
Selection.ShapeRange.Name = "Hour"
' For tick = 1 To 720
ThisTime = Now()
thishour = Hour(ThisTime)
ClockHour = thishour Mod 12
ThisMinute = Minute(ThisTime)
tick = ThisMinute + 60 * ClockHour
MAngle = 2 * Pi * (tick / 60)
HAngle = 2 * Pi * (tick / (60 * 12))
MDegrees = 6 * tick
HDegrees = 6 * (tick / 12)
ActiveSheet.Shapes("Minute").Select
' Rotate first to determine where new bounding box will be
Selection.ShapeRange.Rotation = MDegrees
' use the bounding box to determine where the object
' center is
ShapeLeft = Selection.Left
ShapeTop = Selection.Top
ShapeWidth = Selection.Width
ShapeHeight = Selection.Height
MinuteHandLength = Sqr(ShapeHeight * ShapeHeight + ShapeWidth * ShapeWidth)
ShapeCenterY = ShapeTop + (ShapeHeight / 2)
ShapeCenterX = ShapeLeft + (ShapeWidth / 2)
' determine where the end is
pivotY = ShapeCenterY + Cos(MAngle) * MinuteHandLength / 2
pivotX = ShapeCenterX - Sin(MAngle) * MinuteHandLength / 2
' determine distance to desired location
shiftY = YCenter - pivotY
shiftX = xCenter - pivotX
' shift the shape as required
Selection.Left = ShapeLeft + shiftX
Selection.Top = ShapeTop + shiftY
' do hourhand
ActiveSheet.Shapes("Hour").Select
' Rotate first to determine where new bounding box will be
Selection.ShapeRange.Rotation = HDegrees
' use the bounding box to determine where the object
' center is
ShapeLeft = Selection.Left
ShapeTop = Selection.Top
ShapeWidth = Selection.Width
ShapeHeight = Selection.Height
HourHandLength = Sqr(ShapeHeight * ShapeHeight + ShapeWidth * ShapeWidth)
ShapeCenterY = ShapeTop + (ShapeHeight / 2)
ShapeCenterX = ShapeLeft + (ShapeWidth / 2)
' determine where the end is
pivotY = ShapeCenterY + Cos(HAngle) * HourHandLength / 2
pivotX = ShapeCenterX - Sin(HAngle) * HourHandLength / 2
' determine distance to desired location
shiftY = YCenter - pivotY
shiftX = xCenter - pivotX
' shift the shape as required
Selection.Left = ShapeLeft + shiftX
Selection.Top = ShapeTop + shiftY
Range("A1").Select
Application.ScreenUpdating = True
' Next tick
Range("A1").Select
End Sub
