こんにちは、Ryoです。
Excelで視覚的な表現をする際に欠かせない図形ですが、用途によっては左右・上下に反転させたり任意の角度で回転させたいこともありますよね。シート上の作業として手動で行うようにVBAでも反転させるFlipメソッドや回転させるRotationプロパティがありますので、今回はその内容について書いてみたいと思います。
1.サンプル概要/サンプルコード
◆図形の左右反転
Sheet1の右矢印(Right Arrow 1)を左に反転させます。
≪実行前≫
≪実行後≫
左右反転させた場合は図形上に文字列があっても、文字はそのままになります。
≪サンプルコード≫
Sub Sample1() Dim shp As Variant For Each shp In ActiveSheet.Shapes If InStr(shp.Name, "Right Arrow 1") <> 0 Then shp.Flip msoFlipHorizontal End If Next '本サンプルの場合、以下の記述でもOK 'Worksheets("Sheet1").Shapes(1).Flip msoFlipHorizontal End Sub
左右反転させる場合はFlipメソッドを使用します。
オブジェクト.Flip 設定値(左右反転 Or 上下反転)
本サンプルは左右反転なので、構文の設定値はmsoFlipHorizontalを指定します。
この設定値は右⇒左、左⇒右と反転させるものなので、実行後に再度行えば矢印は右向きに変わります。
◆図形の上下反転
Sample1と同様のFlipメソッドを使い、設定値が上下反転に変わるだけです。
但し、左右反転と違って注意する点としては文字列の変化になります。
≪実行前≫
≪実行後≫
この通り上下反転は出来ますが文字列は逆になります。ちなみに縦書きの状態で実行しても逆になりますので、ご注意ください。
≪サンプルコード≫
Sub Sample2() Dim shp As Variant For Each shp In ActiveSheet.Shapes If InStr(shp.Name, "Isosceles Triangle 2") <> 0 Then shp.Flip msoFlipVertical End If Next '本サンプルの場合、以下の様な記述でもOK 'Worksheets("Sheet1").Shapes(2).Flip msoFlipVertical End Sub
Sample1と同様のFlipメソッドですが、設定値が上下反転なのでmsoFlipVerticalになります。文字列のついては上述の通りなので扱う際に注意が必要ですね。
◆図形を回転する
これはSample1で使用した右矢印を使って、任意の角度で回転させます。
≪実行前≫
≪実行後≫・・・45°回転
≪サンプルコード≫
Sub Sample3() Dim shp As Variant For Each shp In ActiveSheet.Shapes If InStr(shp.Name, "Right Arrow 1") <> 0 Then shp.Rotation = -45 End If Next '本サンプルの場合、以下の様な記述でもOK 'Sample1の図形を再利用しているので、Shapes(1)=1番目の図形 'Worksheets("Sheet1").Shapes(1).Rotation = -45 End Sub
図形を回転させるにはRotationプロパティを使用します。
オブジェクト.Rotation = 角度
構文の角度指定として、時計回り(右回り)はプラス値、反時計回り(左回り)はマイナス値で指定すればOKです。文字列はサンプル画像の通り、一緒に回転します。また、角度は単精度浮動小数点数型(Single)になります。
当然ながら、360°を指定すれば一周するので何も変化ありませんからね。
2.まとめ
図形の左右・上下反転や任意の角度で回転させること自体は簡単に出来ますので、操作したい図形名称さえ把握していれば、処理結果に応じて右上がり/右下がりなどの視覚効果を付けることなども出来ますから、知っていると何かの際に役に立つと思います。
また文字列は左右反転以外は変わってしまうことがあるので、その点だけ留意してもらえれば使いやすいので機会があれば活用をご検討くださいませ!
以上、図形を反転/回転させる方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo