Apply a random transition to every slide in a presentation
PowerPoint allows you to choose the Random transition to apply a random transition to a slide or to all slides in a presentation, but you may not like certain of its transitions.
PowerPoint doesn't let you create a list of the transitions that you want to use and then apply them randomly.
The VBA code below does just that. The subroutine FillTransitionArray fills an array (a list for all practical purposes) with all of the PowerPoint 2000 transitions. By commenting out some of the code, you can eliminate the transitions you don't want to use from the list (see example of commented out transition in the code).
Then when you run ApplyRandomSlideTransitions on your presentation, it applies transitions chosen randomly from the list to each slide. Some transitions are applicable to shapes only and cause errors if applied to slides; the subroutine traps those errors and tries another transition until it finds one that works.
Sub ApplyRandomSlideTransitions()
' Applies a random transition to every slide in the active presentation
' Allows you to specify the list of acceptable transitions (ie, exclude those you don't want)
On Error Resume Next
Dim oSld As Slide
Dim bTransitionApplied As Boolean
Dim lEffect As Long
' Create an array to hold the transitions you want to use
Dim rayTransitions() As Long
' Fill the array with transitions
Call FillTransitionArray(rayTransitions)
Debug.Print UBound(rayTransitions)
Randomize ' Initialize random-number generator.
For Each oSld In ActivePresentation.Slides
bTransitionApplied = False
While Not bTransitionApplied
' pick a random effect from the array of effects
lEffect = rayTransitions(Int((UBound(rayTransitions) * Rnd) + 1))
' try to apply the effect
oSld.SlideShowTransition.EntryEffect = lEffect
If Err.Number = 0 Then
bTransitionApplied = True
Else
Err.Clear
End If
Wend
Next oSld
End Sub
Sub FillTransitionArray(rayTransitions As Variant)
ReDim rayTransitions(1 To 1) As Long
rayTransitions(1) = ppEffectNone ' 0
' Add the transitions you want to the array - comment out the ones you don't want to use
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCut '257
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCutThroughBlack '258
' For example, this is commented out and won't be used
' We don't want PPT assigning random effects that we don't want it to use!
'ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
'rayTransitions(UBound(rayTransitions)) = ppEffectRandom '513
' Note: some of these transitions are applicable to shapes only, not slides
' The errorhandling in the main routine copes with that; no worries
' Note: these are the transitions from PowerPoint 2000
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectBlindsHorizontal '769
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectBlindsVertical '770
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCheckerboardAcross '1025
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCheckerboardDown '1026
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverLeft '1281
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverUp '1282
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverRight '1283
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverDown '1284
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverLeftUp '1285
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverRightUp '1286
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverLeftDown '1287
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCoverRightDown '1288
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectDissolve '1537
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFade '1793
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverLeft '2049
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverUp '2050
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverRight '2051
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverDown '2052
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverLeftUp '2053
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverRightUp '2054
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverLeftDown '2055
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectUncoverRightDown '2056
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectRandomBarsHorizontal '2305
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectRandomBarsVertical '2306
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsUpLeft '2561
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsUpRight '2562
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsDownLeft '2563
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsDownRight '2564
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsLeftUp '2565
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsRightUp '2566
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsLeftDown '2567
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStripsRightDown '2568
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectWipeLeft '2817
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectWipeUp '2818
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectWipeRight '2819
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectWipeDown '2820
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectBoxOut '3073
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectBoxIn '3074
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromLeft '3329
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromTop '3330
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromRight '3331
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromBottom '3332
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromTopLeft '3333
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromTopRight '3334
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromBottomLeft '3335
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlyFromBottomRight '3336
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectPeekFromLeft '3337
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectPeekFromDown '3338
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectPeekFromRight '3339
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectPeekFromUp '3340
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCrawlFromLeft '3341
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCrawlFromUp '3342
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCrawlFromRight '3343
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectCrawlFromDown '3344
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomIn '3345
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomInSlightly '3346
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomOut '3347
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomOutSlightly '3348
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomCenter '3349
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectZoomBottom '3350
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStretchAcross '3351
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStretchLeft '3352
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStretchUp '3353
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStretchRight '3354
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectStretchDown '3355
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSwivel '3356
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSpiral '3357
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSplitHorizontalOut '3585
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSplitHorizontalIn '3586
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSplitVerticalOut '3587
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectSplitVerticalIn '3588
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlashOnceFast '3841
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlashOnceMedium '3842
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectFlashOnceSlow '3843
ReDim Preserve rayTransitions(1 To UBound(rayTransitions) + 1) As Long
rayTransitions(UBound(rayTransitions)) = ppEffectAppear '3844
End Sub
See How do I use VBA code in PowerPoint? to learn how to use this example code.
Search terms:random,transition,list,specific