三流君のソースコード置き場

ブログにソースコードをアップして、ブログの検索機能で利用してます(利用予定です)

挨拶・自己紹介:「こんな感じ」や「あの、あの」と活舌の悪い、
三流プログラマーのオッサンです
Ken3三流君へ問い合わせ・連絡先:
[Ken3(管理者)へメッセージを送る], [YouTube動画にコメントを書く]
※↑質問・感想,コード修正・作成依頼など気軽に送ってください。

PowerPoint VBA OnSlideShowPageChange でハマる

ken3memo.hatenablog.com

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

以上、長かったけど、一つでも処理の参考となればうれしいです。


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~