スライドをランダムにシャッフルして、PowerPoint プレゼンテーションに驚きの要素を追加したい場合があります。たとえば、生徒向けのプレゼンテーションを作成し、フラッシュカードの一部またはすべてをシャッフルしたいとします。

デフォルトでは、PowerPoint にはこの機能が組み込まれていませんが、マクロを使用してこれを実現できます。このステップバイステップのガイドでは、スライドを手動でシャッフルする方法と、VBA コードを使用してランダム シャッフル プロセスを自動化する方法を説明します。
PowerPoint でスライドを手動でシャッフルする方法
Microsoft PowerPoint では、「スライド ソーター」ビューを使用してプレゼンテーション内のスライドを手動でシャッフルし、ランダムな順序で表示できます。この方法はマクロを使用するほどランダムではないかもしれませんが、それでもスライドを別の順序で並べ替えることができます。
PowerPoint プレゼンテーションのスライドを手動でシャッフルしてランダム化するには、以下の手順に従います。



この方法は、手動での調整に依存するため、完全にランダムな順序を保証するものではないことに注意してください。次のスライドを表示するボタンを押した後に完全にランダムなスライドが表示されるようにしたい場合は、VBA マクロを使用して、より正確かつ自動化されたランダム シャッフルを行うことができます。.
VBA コードを使用して PowerPoint スライドをランダム化する方法
PowerPoint スライドが完全にランダムな順序で再生されるようにするには、少しコーディングする必要があります。 Microsoft Office PowerPoint のマクロ オプションを使用すると、VBA コードを実行してプレゼンテーション内のスライドを自動的にシャッフルできます。
このチュートリアルでは、スライドを重複せずにシャッフルする方法を説明します。同じスライドが繰り返されないように PowerPoint でスライドをランダム化するには、次の手順に従います。




サブ シャッフルスライド()
最初のスライド = 2
最後のスライド = 5
ランダム化
「最初のスライドと最後のスライドの間にランダムな番号を生成します」
GRN:
RSN = Int((LastSlide – FirstSlide + 1) * Rnd + FirstSlide)
RSN = ActivePresentation.SlideShowWindow.View.Slide.SlideIndex の場合、GRN に移動
ActivePresentation.SlideShowWindow.View.GotoSlide (RSN)
End Sub
VBA エディターで、「FirstSlide」と「LastSlide」に続くスライド番号を調整して、シャッフルに含めるスライドの範囲を指定します。デフォルトでは、タイトル スライドが含まれないように、シャッフルはスライド 2 から始まります。タイトルスライドをシャッフルの対象外にしたい場合は、「FirstSlide = 2」のままにしてください。.
たとえば、10 枚のスライドからなるプレゼンテーションがあり、タイトル スライドのシャッフルを省略したいとします。その場合は「FirstSlide = 2」「LastSlide = 10」と設定します。こうすると、スライド 2 ~ 10 のみがシャッフル プロセスに含まれ、タイトル スライドは影響を受けません。


プレゼンテーション モードに入り、最初のスライドのボタンをクリックしてスライドをランダムにシャッフルします。ダイナミックで繰り返しのないプレゼンテーションをお楽しみください。
偶数または奇数のスライドのみをシャッフルする方法
プレゼンテーション内の特定のスライド (偶数スライドまたは奇数スライドなど) のみをシャッフルする場合は、次の VBA コードを使用して、残りの部分を妨げずに偶数番号または奇数番号のスライドのみをランダム化できます。
これを行うには、Visual Basic Editor ウィンドウが表示されるまで上記の手順に従い、次のコードを挿入します。
サブ シャッフルスライド()
EvenShuffle = True (奇数番号のスライドのみをシャッフルする場合は false に置き換えます)
FirstSlide = 2 (必要に応じて偶数/奇数にする必要があります)
最後のスライド = 8
ランダム化
For i = 最初のスライドから最後のスライドまでステップ 2
生成: 「最初のスライドと最後のスライドの間にランダムな番号を生成します」
RSN = Int((LastSlide – FirstSlide + 1) * Rnd) + FirstSlide
EvenShuffle = True の場合
RSN Mod 2 = 1 の場合、GoTo を生成
それ以外
RSN Mod 2 = 0 の場合、GoTo 生成
次の場合に終了
ActivePresentation.Slides(i).MoveTo (RSN)
If i
If i >RSN then ActivePresentation.Slides(RSN + 1).MoveTo (i)
次は
End Sub
終わりのないループでスライドをシャッフルする方法
上記のチュートリアルでは、PowerPoint スライドをシャッフルし、繰り返さずにランダムな順序で再生する方法を示します。ただし、1 つのループの後は、再度スライドをシャッフルしない限り、同じシャッフル順序が維持されます。
スライド ショー モード中に、ループごとに新しいランダムな順序で無限ループ内のすべてのスライドを自動的に実行するには、次のコードを使用できます。プレゼンテーション内のスライドの数に合わせて、FirstSlide = と LastSlide = の後の数字を必ず変更してください。
パブリック位置、範囲、整数としての AllSlides()
Sub ShuffleAndBegin()
最初のスライド = 2
最後のスライド = 6
範囲 = (LastSlide – FirstSlide)
すべてのスライドを再調整(0 から範囲)
For i = 0 から範囲
AllSlides(i) = FirstSlide + i
次は
ランダム化
N = 0 から範囲の場合
J = Int((範囲 + 1) * Rnd)
温度 = AllSlides(N)
すべてのスライド(N) = すべてのスライド(J)
AllSlides(J) = 温度
次の N
位置 = 0
ActivePresentation.SlideShowWindow.View.GotoSlide AllSlides(位置)
エンドサブ
サブアドバンス()
位置 = 位置 + 1
位置 >範囲の場合
シャッフルして開始
その他
ActivePresentation.SlideShowWindow.View.GotoSlide AllSlides(位置)
次の場合に終了
End Sub