
よろしくお願いいたします。
パワーポイントのマクロを使って添付画像にある3つの数字(number1,2,3)を
ボタン(兜のイラスト)を押した後に5回シャッフルしてランダムな数字を表示したいと考えております。
ボタンを押したらランダムに数字を表示させることは出来たのですが、
5回シャッフルした後に表示させるマクロの書き方が分からなかったので教えてください。
下記が現在のマクロです。
Sub Test()
Randomize
With ActivePresentation.Slides(1).Shapes("number1")
.TextFrame.TextRange.Text = Int((10 * Rnd) + 1)
End With
With ActivePresentation.Slides(1).Shapes("number2")
.TextFrame.TextRange.Text = Int((10 * Rnd) + 1)
End With
With ActivePresentation.Slides(1).Shapes("number3")
.TextFrame.TextRange.Text = Int((10 * Rnd) + 1)
End With
End Sub
またシャッフル中の数字も見えるようにしたいです。
イメージ的にはこの方のYouTube動画のような数字の動きです。
よろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
No1です。
連投失礼。
No1は、短時間に2度クリックされることを考慮していませんでした。
(試してはいませんが、IDが上書きされるので止まらなくなるはず)
最初に
If mTimerID <> 0 Then Exit Sub
などを入れて、防止しておいてください。
No.1
- 回答日時:
こんにちは
Shapeということは、対象がテキストボックスなどということでしょうか?
基本的には、適当な時間間隔を置いて、ご提示の処理を繰り返せば良いのですが、当方の環境では画面のリフレッシュがされないようです。(Office 2019)
旧い記事では、DoEventsで一旦制御を渡せば、リフレッシュされるような雰囲気なのですが、試してみたところ反映されませんね。
表示要素をChartを利用するように変えれば、Refresh メソッドがあるので再描画可能と思いますが、Shapeの場合はそのようなメソッドもなさそうです。
ですので、以下は、APIのSetTimerを利用する方法にしてあります。
(他にも方法はあるかも知れませんけれど・・)
スライドショー実行中に動作することで良いものと解釈しました。
(実行中でないと動作しませんので、ご注意。)
※ AddressOfを利用する関係で、以下は標準モジュールに記載する必要があります。
※ その上で、トリガー(画像クリック?)から、startShuffleを呼び出すようにしてください。
※ 対象のShapeは表示中のスライドの、Nameが number1、number2、number3と決め打ちにしてあります。
Private Declare PtrSafe Function SetTimer Lib "USER32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As LongPtr) As Long
Private Declare PtrSafe Function KillTimer Lib "USER32" (ByVal hwnd As Long, _
ByVal nIDEvent As Long) As Long
Private mTimerID As Long
Private cnt As Long
Sub startShuffle()
cnt = 0
mTimerID = SetTimer(0&, 1&, 150&, AddressOf changeText)
End Sub
Sub changeText()
Dim i As Long
If mTimerID = 0 Then End
With ActivePresentation.SlideShowWindow.View.Slide
For i = 1 To 3
.Shapes("number" & i).TextFrame.TextRange.Text = Int(10 * Rnd)
Next i
End With
cnt = cnt + 1
If cnt > 5 Then
Call KillTimer(0&, mTimerID)
mTimerID = 0
End If
End Sub
※ もしも32ビット環境の場合には、関数宣言の「PtrSafe」等を除いてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
このQ&Aを見た人はこんなQ&Aも見ています
-
パワーポイントでランダムに表示させる方法
PowerPoint(パワーポイント)
-
拡張できる抽選用のフリーソフトを欲しい
PowerPoint(パワーポイント)
-
office365パワーポイントでBINGOカード
PowerPoint(パワーポイント)
-
-
4
顔写真等の画像をルーレット形式で抽選するソフト
フリーソフト
-
5
パワーポイントでスライドをランダム再生したい。
その他(Microsoft Office)
-
6
クリックしたらパネルがめくれる効果
PowerPoint(パワーポイント)
-
7
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
8
PowerPointでクリックしたオブジェクトを操作するには
Access(アクセス)
-
9
PowerPointのスライドの途中で、タイマーを入れたいです。
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
【ExcelVBA】クエリの更新とピ...
-
VBA[Private Sub]のコードをシ...
-
cellsで特定の離れた範囲を選択...
-
最初の1回のみにボタンクリッ...
-
どのドキュメントは暗号化され...
-
ファイル名を今日の日付、時刻...
-
Excelのラジオボタンにチェック...
-
Powerpointでランダムな数字の...
-
VBAをVBに変換する方法
-
エクセルのマクロのボタンで他...
-
VBAを使ってエクセルシート...
-
EXCELにクリップボードにある画...
-
複数のグラフを整列させて表示...
-
ごく簡単なマクロなのですが。
-
ピボットグラフの書式の固定に...
-
Visual Cのソース編集について
-
エクセルVBAで、画像の倍率を知...
-
エクセルのマクロでSelection.S...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数のデータ系列の線の太さを...
-
エクセルでツールバーに「縮小...
-
cellsで特定の離れた範囲を選択...
-
ファイル名を今日の日付、時刻...
-
最初の1回のみにボタンクリッ...
-
VBA[Private Sub]のコードをシ...
-
どのドキュメントは暗号化され...
-
Powerpointでランダムな数字の...
-
ピボットグラフの書式の固定に...
-
エクセルVBAで、画像の倍率を知...
-
【ExcelVBA】クエリの更新とピ...
-
別ブックからユーザーフォーム...
-
VBAを使ってエクセルシート...
-
エクセルのマクロでSelection.S...
-
Pictures.Insertメソッド⇒Shape...
-
wordのマクロで縮小して貼り付...
-
EXCELにクリップボードにある画...
-
【VC++6.0(MFC)】コメントを一...
-
Excelのマクロで最下行を選択し...
-
VBA ChartWizardで円グラフが書...
おすすめ情報