Function GrowShape (ByRef Shape As Shape, Step As Integer) As Boolean
'   Description:Expands a shape into view
  '   Parameters: Shape       The shape to animate
'               Step        Larger #s animate faster
'   Example:    GrowShape ActiveSheet.Shapes("Logo"), 10
  '   Note:       For best results, shape should be hidden before calling
'               this routine
'     Date   Init Modification
  '   01/10/11 CWH  Initial Programming
    Dim lCenterX As Long    'Shape's center X coordinate
    Dim lCenterY As Long    'Shape's center Y coordiante
      Dim lWidth   As Long    'Shape's width
    Dim lHeight  As Long    'Shape's height
    Dim l        As Long    'Generic Counter for the loop
     
    Application.ScreenUpdating = False
   
    With Shape
       'Remember shape's original dimensions
          lCenterX = .Width / 2 + .Left
        lCenterY = .Height / 2 + .Top
        lWidth = .Width
        lHeight = .Height
         'Animation Loop
        For l = 0 To lWidth Step Step
            .Width = l
            .Height = l * lHeight / lWidth
              .Left = lCenterX - .Width / 2
            .Top = lCenterY - .Height / 2
            Shape.Visible = True
              Application.ScreenUpdating = True
            Application.ScreenUpdating = False
        Next l
       'Restore shape's original dimensions
          .Width = lWidth
        .Height = lHeight
        .Left = lCenterX - .Width / 2
        .Top = lCenterY - .Height / 2
      End With
   
    Application.ScreenUpdating = True
End Function
 
  Function SpinShape (ByRef Shape As Shape, Step As Integer) As Boolean
'   Description:Expands a shape into view
'   Parameters: Shape       The shape to animate
  '               Step        Larger #s animate faster
'                           Steps should divide 90 evenly
'   Example:    SpinShape ActiveSheet.Shapes("Logo"), 10
  '     Date   Init Modification
'   01/10/11 CWH  Initial Programming
   
    Const Pi = 3.14159265358979
      Dim sng01 As Single     '1 Degree in Radians
        sng01 = Pi / 180
       
    Dim lCenterX As Long    'Shape's center X coordinate
      Dim lCenterY As Long    'Shape's center Y coordiante
    Dim lWidth   As Long    'Shape's width
    Dim lHeight  As Long    'Shape's height
      Dim l        As Long    'Generic Counter for the loop
   
    Application.ScreenUpdating = False
   
      With Shape
        .LockAspectRatio = False
       'Remember shape's original dimensions
        lCenterX = .Width / 2 + .Left
          lCenterY = .Height / 2 + .Top
        lWidth = .Width
        lHeight = .Height
       'Animation Loop
          For l = 0 To 360 Step Step
            .Width = lWidth * Abs(Cos(l * sng01))
            .Left = lCenterX - .Width / 2
              If l = 90 Or l = 270 Then .Flip msoFlipHorizontal
            Shape.Visible = True
            Application.ScreenUpdating = True
              Application.ScreenUpdating = False
        Next l
       'Restore shape's original dimensions
        .Width = lWidth
          .Height = lHeight
        .Left = lCenterX - .Width / 2
        .Top = lCenterY - .Height / 2
    End With
     
    Application.ScreenUpdating = True
End Function