プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[EXCEL] 角丸四角形シェイプのコーナーRをミリ指定する

EXCELで挿入できる図形に角丸四角形というものがあります。

その名の通り角を丸くできる四角の枠です。

shape1

この図形のカドの丸みの大きさは、左上に付いている黄色いマークをドラッグすることで変更可能です。

この丸みは通常数値指定できないため、この枠をいくつも作った場合はなんとなく見た目で合わせることになります。

ただし、この丸みは図形のサイズを変更した時に勝手に大きくなったり小さくなったりします。

 

そのため、色々な大きさの角丸四角形を置いた場合、丸みの大きさがちぐはぐになり、同じ丸みにしたい場合は、合わせるのに苦労します。

shape1

というわけで、VBAを使って、コーナーRをあわせる関数を作りました。

丸みを数値で設定するのは1つの既存関数(Adjustments)を実行するだけでできるのですが、サイズの指定がボックスのサイズに対する相対値(比率?)なので、とても分かりにくいです。
そのため、この関数では、丸みをmmサイズで指定できるようにしています。

Option Explicit

' 角丸四角形のRを固定値指定する
'
Sub ChangeCornerR()

    Dim currentR As Double
    Dim shapeSize As Integer
    Dim afterR As Double
    Dim afterRpt As Double
    Dim afterRmm As Double
    Dim sp As Shape
    Dim result As Double
    
    '変更後のコーナーR(mm)
    afterRmm = 5
    
    For Each sp In Selection.ShapeRange
        '角丸四角形の縦横短い方長さを取得する(pt)
        shapeSize = WorksheetFunction.Min(sp.Width, sp.Height)
        
        '[参考]現時点の半径(mm)
        'currentR = shapeSize * sp.Adjustments.Item(1) / 2.835
        
        '変更後の半径指定をmmからptに換算
        afterRpt = afterRmm * 2.835

        '指定された数値が短い辺の半分以上だったら短い辺の半分に修正
        If afterRpt > shapeSize / 2 Then afterRpt = shapeSize / 2
        
        result = afterRpt / shapeSize
        
        sp.Adjustments.Item(1) = result
    Next

End Sub

予め対象の図形を選択(1つ/複数)しておいて、この関数を実行すると、コーナーRが一括で設定されます。
事前に関数内の、afterRmm 値を指定しておいて下さい。
プログラムで設定するので、丸みは全て統一できます。

この関数で設定しても再度図形のサイズを変更した場合は、また丸みの大きさが変わってしまうので、図形の大きさが確定してからこの関数を実行すれば良いと思います。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください