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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。