OfficeTips Home || VBA Section || General Section || Download Section || Privacy Policy

Determine The Direction Of A Line Shape
 

This question was posed in a Microsoft newsgroup. The user wanted to determine the direction of inclination of the lines in his slides. Given below is a sample code put together to illustrate the line directions for you. I have not included code to detect perfectly vertical lines or perfectly horizontal lines. This is left for you as exercise.


' --------------------------------------------------------------------------------
' Copyright ©1999-2018, Shyam Pillai, All Rights Reserved.
' --------------------------------------------------------------------------------
' You are free to use this code within your own applications, add-ins,
' documents etc but you are expressly forbidden from selling or 
' otherwise distributing this source code without prior consent.
' This includes both posting free demo projects made from this
' code as well as reproducing the code in text or html format.
' --------------------------------------------------------------------------------
'The directions indicate the direction of creation of these lines.
'This code iterates thru all shapes on the first slide,
'locates the line shapes and prints out the directions
Dim x As Slide
Set x = ActivePresentation.Slides(1)
'Iterate thru all shapes on the slide
For i = 1 To x.Shapes.Count 
    With x.Shapes(i)
' Determine whether the current shape is a line
    If .Type = msoLine Then 
        'Check the VerticalFlip and HorizontalFlip properties of a line object
        'to ascertain its direction. You need to extend this further to take
        'care of Perfectly Vertical & Horizontal lines
        If .VerticalFlip = msoTrue Then
            If .HorizontalFlip = msoTrue Then
                Debug.Print "Line direction: North-West"
            Else
                Debug.Print "Line direction: North-East"
            End If
        Else
            If .HorizontalFlip = msoTrue Then
                Debug.Print "Line direction: South-West"
            Else
                Debug.Print "Line direction: South-East"
            End If
        End If
    End If
   End With
Next i
End Sub

 

Create a 'Splash' screen using a UserForm


MS forms do not support modeless display (97) and hence we make use of the Activate event of the UserForm to simulate a splash screen. Sleep API is used as a timer to resume code execution after a preset interval. Insert a UserForm into the VBA project. Double click on the UserForm and paste the code given below.


' --------------------------------------------------------------------------------
' Copyright ©1999-2018, Shyam Pillai, All Rights Reserved.
' --------------------------------------------------------------------------------
' You are free to use this code within your own applications, add-ins,
' documents etc but you are expressly forbidden from selling or
' otherwise distributing this source code without prior consent.
' This includes both posting free demo projects made from this
' code as well as reproducing the code in text or html format.
' --------------------------------------------------------------------------------

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub UserForm_Activate()
' Let the UserForm draw itself completely
DoEvents
' Suspend the code execution for 3 seconds
Sleep 3000
' Unload the UserForm
Unload Me
End Sub


 

 

Copyright 1999-2018 (c) Shyam Pillai. All rights reserved.