即効テクニック

図形操作関連のテクニック

図形を回転する

(Excel 2000)
対象の図形の回転角度を設定します。図形は設定した角度で、図形の中心を軸に時計周りに回転します。反時計回りに回転させたい場合には、マイナスの値を設定してください。当然の話ですが、反時計回りの30度と時計回りの330度は同じ回転角度を示します。


●詳細●

  構文  Object.Rotation     設定/取得

  設定項目              内容
  Object                Shape、ShapeRangeコレクションオブジェクト [省略不可]

次のサンプル1はセルB1の左上端からC1の左上端に矢印を12本作成します。それぞれの回転角を30度ずつ増加させていき、12本目では360度、すなわち0度になります。


●サンプル●

 Sub RotationSamp1()
     Dim i As Single

     For i = 1 To 12    '---12回処理を繰り返す
         With ActiveSheet.Shapes.AddLine _
             (BeginX:=Range("B4").Left, BeginY:=Range("B4").Top, _
              EndX:=Range("C4").Left, EndY:=Range("C4").Top)
              '---B4左上端からC4左上端に直線を引き、その直線に対して
             .Line.EndArrowheadStyle = msoArrowheadTriangle
             .Line.EndArrowheadLength = msoArrowheadLengthMedium
             .Line.EndArrowheadWidth = msoArrowheadWidthMedium
             '---終端の形状を矢印に設定します
          .Rotation = i * 30!
          '---ループ回数に応じて、角度を30度づつ変化させる
         End With
     Next i
   
 End Sub


●ポイント●
Rotationプロパティで設定するには、元の図形に対しての絶対的な回転角度です。
したがって、すでに30度回転している図形のRotationプロパティに再度30を指定しても、変化は起こりません。現在表示されている状態からさらに何度か回転させたい場合には、IncrementRotationメソッドを使用します。

次のサンプル2はアクティブシートの1つ目の図形を反時計回りに30度ずつ、12回転させます。それぞれの回転角度におけるRotationプロパティの値を確認して下さい。


●サンプル2●

 Sub RotationSamp2()
     Dim i As Long

     For i = 1 To 12   '---12回処理を繰り返す
         With ActiveSheet.Shapes(1)
             .IncrementRotation -30!  '---反時計回りに30度回転させる
             DoEvents                 '---再描画する
             MsgBox "現在の回転角度は" & .Rotation & "です"
         End With
     Next i

 End Sub