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

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

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

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

マクロ

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

解決済

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

0987kjhfas
0987kjhfas

総合スコア3

VBA

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

マクロ

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

1回答

0評価

0クリップ

123閲覧

投稿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

Option Explicit 'スタートボタン押下時のTimer()関数の戻り値 Dim sStart As Single '現在時刻のTimer()関数の戻り値 Dim sCurrent As Single '前回表示を更新した自国のTimer()関数の戻り値 Dim sPrevious As Single 'True:カウントアップ false:停止 Dim bCount As Boolean '時間 Dim iHour As Integer '分 Dim iMin As Integer '秒 Dim iSec As Integer Dim strTmp As String 'スライドショーでページが切り替わった時に実行 Public Sub OnSlideShowPageChange(ByVal Wn As SlideShowWindow) 'スライドショー一枚目に切り替えたとき0秒を表示 If ActivePresentation.SlideShowWindow.View.Slide.SlideIndex = 1 Then Label1.Caption = strTmp End If End Sub 'スライドショーが終了時に実行 Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow) 'タイマーの更新を終了 bCount = False End Sub Private Sub StartButton_Click() bCount = True 'sStartに現在の時刻を秒数にしたものを代入 sStart = Timer() 'Lbel1にsStartを表示 'CStr 関数は、数値や日付などを文字列型 (String) に変換 Label1.Caption = "00:00" '更新時刻を記録 sPrevious = sStart 'bCountがtrueの間、タイマーを更新。ストップボタンが押されるとbCountがfalseになりタイマーが止まる Do While (bCount = True) 'sCurrentに現在時刻を代入 sCurrent = Timer() If (sCurrent - sPrevious) >= 1 Then '経過秒を表す整数 Dim iElapsedSec As Integer iElapsedSec = CInt(sCurrent - sStart) iHour = iElapsedSec \ 3600 iMin = (iElapsedSec Mod 3600) \ 60 iSec = (iElapsedSec Mod 3600) Mod 60 Dim strHour As String Dim strMin As String Dim strSec As String '時間が二桁以外の場合ゼロを足す If iHour >= 10 Then strHour = CStr(iHour) & ":" Else strHour = "0" & CStr(iHour) & ":" End If '分が二桁以外の場合ゼロを足す If iMin >= 10 Then strMin = CStr(iMin) & ":" Else strMin = "0" & CStr(iMin) & ":" End If '秒が二桁以外の場合ゼロを足す If iSec >= 10 Then strSec = CStr(iSec) Else strSec = "0" & CStr(iSec) End If Label1.Caption = strMin & strSec Slide154.Label1.Caption = strMin & strSec strTmp = strMin & strSec sPrevious = sCurrent End If DoEvents Loop End Sub Private Sub StopButton_Click() bCount = False End Sub

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

VBA

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

マクロ

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