Powerpoint VBAを使おう!

Powerpoint VBAやExcelのVBAで遊んでいます。Word VBAも始めました。

扇形を動かす

タイマーを作ったときに扇形で遊んだので,それを書きます。

Option Explicit

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Sub test()
ActivePresentation.SlideShowSettings.Run  'スライドショースタート

Dim TSlide As Slide: Set TSlide = ActivePresentation.Slides(1)

On Error Resume Next  '図形をどんどん書いてしまうので,前のを消します。
    TSlide.Shapes("扇形").Delete
On Error GoTo 0

Dim shpPie As Shape:Set shpPie = TSlide.Shapes.AddShape(msoShapePie, 50, 50, 100, 100)
Dim shpTxt As Shape:Set shpTxt = TSlide.Shapes.AddTextbox(msoTextOrientationHorizontal, 200, 50, 100, 100)
shpPie.Name = "扇形"
shpPie.Adjustments(1) = -90

Dim i As Long
For i = 0 To 36
    shpPie.Adjustments(2) = -89.9 + i * 10
    shpTxt.TextFrame.TextRange = i * 10  '画面更新をきちんとするためにテキストを書かせる。
    
    Sleep 100
    DoEvents
Next
shpPie.Adjustments(2) = -90.5  '最後円に近い形で残るように微調整
shpTxt.Delete 'テキストさよなら

SlideShowWindows(1).View.Exit 'スライドショーストップ

Set TSlide = Nothing
Set shpPie = Nothing
End Sub

前準備がいらないように,全部コードで。
f:id:chemiphys:20170103023542g:plain
扇形のAdjustmentを動かしてあげるだけで扇形が変化していくので,タイマーとかと相性がいいなぁと思ってます。

タイマーはAPIのSetTimerとKillTimerでできます。
他の方のコードをちょこっといじっただけのものになってるので,載せるのはやめて・・・(;´▽`A``
リンクだけでも貼ろうかと思ったらソースが見当たらない・・ずいぶん前に見たしなぁ・・・

あれれ。 AddressOf演算子が使われてて参照渡しに興味を持つきっかけになったコードだったんですが
見当たりません。いつか書くことなくなったら載せてみます。