質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

474閲覧

PowerPointマクロにて他スライドのトリガーを使用したい。

0987kjhfas

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2022/05/23 13:48

PowerPointのマクロを利用してプレゼンテーションを作成しています。

・スライド1
★timer
★stopButton
・スライド2
★timer
★stopButton
(★はオブジェクト)

スライド1にタイマーを動かすかつ止めるマクロを実装しています。
スライド2でstopButton時にスライド1とスライド2のtimerが止まるようにしたいのですが、
スライド1のstopButton押下時しかtimerが止まりません。

timerを止めるのはフラグを利用しているのですが、
スライド1内にスライド2のstopButton押下時にフラグをfalseにするといったように
他のスライドをトリガーにすることはできますでしょうか。

VBA

1Option Explicit 2 3'スタートボタン押下時のTimer()関数の戻り値 4Dim sStart As Single 5'現在時刻のTimer()関数の戻り値 6Dim sCurrent As Single 7'前回表示を更新した自国のTimer()関数の戻り値 8Dim sPrevious As Single 9'True:カウントアップ false:停止 10Dim bCount As Boolean 11'時間 12Dim iHour As Integer 13'分 14Dim iMin As Integer 15'秒 16Dim iSec As Integer 17Dim strTmp As String 18 19'スライドショーでページが切り替わった時に実行 20Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 21 'スライドショー一枚目に切り替えたとき0秒を表示 22 If ActivePresentation.SlideShowWindow.View.Slide.SlideIndex = 1 Then 23 Label1.Caption = strTmp 24 End If 25End Sub 26'スライドショーが終了時に実行 27Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow) 28 'タイマーの更新を終了 29 bCount = False 30End Sub 31Private Sub StartButton_Click() 32 33 bCount = True 34 35 'sStartに現在の時刻を秒数にしたものを代入 36 sStart = Timer() 37 38 'Lbel1にsStartを表示 39 'CStr 関数は、数値や日付などを文字列型 (String) に変換 40 Label1.Caption = "00:00" 41 42 '更新時刻を記録 43 sPrevious = sStart 44 45 'bCountがtrueの間、タイマーを更新。ストップボタンが押されるとbCountがfalseになりタイマーが止まる 46 Do While (bCount = True) 47 'sCurrentに現在時刻を代入 48 sCurrent = Timer() 49 50 If (sCurrent - sPrevious) >= 1 Then 51 52 '経過秒を表す整数 53 Dim iElapsedSec As Integer 54 iElapsedSec = CInt(sCurrent - sStart) 55 56 iHour = iElapsedSec \ 3600 57 iMin = (iElapsedSec Mod 3600) \ 60 58 iSec = (iElapsedSec Mod 3600) Mod 60 59 60 Dim strHour As String 61 Dim strMin As String 62 Dim strSec As String 63 64 '時間が二桁以外の場合ゼロを足す 65 If iHour >= 10 Then 66 strHour = CStr(iHour) & ":" 67 Else 68 strHour = "0" & CStr(iHour) & ":" 69 End If 70 71 '分が二桁以外の場合ゼロを足す 72 If iMin >= 10 Then 73 strMin = CStr(iMin) & ":" 74 Else 75 strMin = "0" & CStr(iMin) & ":" 76 End If 77 78 '秒が二桁以外の場合ゼロを足す 79 If iSec >= 10 Then 80 strSec = CStr(iSec) 81 Else 82 strSec = "0" & CStr(iSec) 83 End If 84 85 Label1.Caption = strMin & strSec 86 Slide154.Label1.Caption = strMin & strSec 87 strTmp = strMin & strSec 88 sPrevious = sCurrent 89 End If 90 DoEvents 91 Loop 92End Sub 93Private Sub StopButton_Click() 94 bCount = False 95End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VBA_Slide1,Slide2

1Option Explicit 2Private Sub StartButton_Click() 3 bCount = True 4 TimeCount 5End Sub 6 7Private Sub StopButton_Click() 8 bCount = False 9End Sub

VBA_標準module

1Option Explicit 2Public bCount As Boolean 3 4Sub TimeCount() 5 Do While bCount 6 Dim sl As Slide, sh As Shape 7 For Each sl In ActivePresentation.Slides 8 For Each sh In sl.Shapes 9 If sh.Name = "Label1" Then sh.OLEFormat.Object.Caption = Now() 10 Next sh, sl 11 DoEvents 12 Loop 13End Sub 14

投稿2022/05/24 01:15

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問