https://youtu.be/jP0O2KlXeLE
目次
00:00 1.処理のタイミングをとりたい
00:32 1.2 標準モジュールにOnSlideShowPageChange
03:20 1.4 ん?一回目にコードが走らない?なんだこれ?
05:55 2.事前準備で名前を付ける
08:12 3.1 1ページ目でランダムの数値をセットする
11:37 3.2 スライド2ページ目に移動したら、1ページ目の値をセットする
15:39 4.スライドショー実行中、エラーを無視している?
17:27 5.おまけ 蛇足の繰り返し Split関数を使う
Option Explicit 'ページが切り替わった時 Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 'select Caseで分岐 Select Case ActivePresentation.SlideShowWindow.View.Slide.SlideIndex Case 1: Call page1処理 Case 2: Call page2処理 End Select 'Debug.Print ActivePresentation.SlideShowWindow.View.Slide.SlideIndex End Sub '1ページ目、初期処理。ランダムな数値をセットする Sub page1処理() Dim 乱数 As Integer Randomize '乱数初期化の同じない With ActivePresentation.Slides(1) '相手のステをセットする '体力のセット 体力は 20 + 1から12 とする 乱数 = Int((12 * Rnd) + 1) '1から12の値 .Shapes("txt相手体力").TextFrame.TextRange.Text = 20 + 乱数 '攻撃力 は 10 + 1から79 とする 乱数 = Int((79 * Rnd) + 1) '1から79の値 .Shapes("txt相手攻撃力").TextFrame.TextRange.Text = 10 + 乱数 '防御力 は 100-攻撃力 とする .Shapes("txt相手防御力").TextFrame.TextRange.Text _ = 100 - Int(.Shapes("txt相手攻撃力").TextFrame.TextRange.Text) '自分のステをセットする '体力のセット 体力は 20 + 1から12 とする 乱数 = Int((12 * Rnd) + 1) '1から12の値 .Shapes("txt自分体力").TextFrame.TextRange.Text = 20 + 乱数 '攻撃力 は 10 + 1から79 とする 乱数 = Int((79 * Rnd) + 1) '1から79の値 .Shapes("txt自分攻撃力").TextFrame.TextRange.Text = 10 + 乱数 '防御力 は 100-攻撃力 とする .Shapes("txt自分防御力").TextFrame.TextRange.Text _ = 100 - Int(.Shapes("txt自分攻撃力").TextFrame.TextRange.Text) End With End Sub '2ページ目 1ページ目のステをコピーする とりあえずここまで。 Sub page2処理() 'セットする項目名をループで回してみます Dim objSLp1 As Slide Set objSLp1 = ActivePresentation.Slides(1) 'スライド1ページ目を変数へ Dim objSLp2 As Slide Set objSLp2 = ActivePresentation.Slides(2) 'スライド2ページ目を変数へ Dim str項目名 As Variant str項目名 = Split("体力,攻撃力,防御力", ",") Dim n As Integer For n = 0 To UBound(str項目名) 'UBound使用インデックス最大値までループ 'ページ1str項目名(n)をページ2にセットする objSLp2.Shapes("txt相手" & str項目名(n)).TextFrame.TextRange.Text _ = objSLp1.Shapes("txt相手" & str項目名(n)).TextFrame.TextRange.Text objSLp2.Shapes("txt自分" & str項目名(n)).TextFrame.TextRange.Text _ = objSLp1.Shapes("txt自分" & str項目名(n)).TextFrame.TextRange.Text Next n End Sub Sub test() Dim MyValue As Long Randomize MyValue = Int((6 * Rnd) + 1) ' MsgBox "サイコロ1-6: " & MyValue End Sub
以上、長かったけど、一つでも処理の参考となればうれしいです。