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

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

よく検索されるキーワード: [VBA]/ [VBS]/ [CreateObject]/ [Excel]/ [ADO]


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

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

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
(※詳細は[三流君 三流プログラマーとは?]を見てください)


Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。
・[Excel/Access VBA]の解説
・[ASP(Active Server Pages)]の解説。
・[元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
・[プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
三流君を踏み台にする
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。

三流解説動画の再生リスト
https://www.youtube.com/user/ken3video/playlists

本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)