読者です 読者をやめる 読者になる 読者になる

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