概要
DrawRectangleRoundは、指定した位置とサイズで角丸四角形のShapeを作成する汎用関数です。戻り値として作成した図形を返すため、呼び出し側で文字、色、OnActionなどを続けて設定できます。
選択セルに追従する増減ボタンでは、増加・減少ボタン用の角丸図形を作成するために使っています。
使う場面
- シート上に図形ボタンをVBAで作りたい
- 角丸のラベルやボタンを作成したい
- 図形作成後に文字や色を設定したい
- 左上以外の方向へドラッグするような座標指定にも対応したい
使用例
Dim btn As Shape
Set btn = DrawRectangleRound(100, 50, 80, 30, ActiveSheet)
btn.TextFrame2.TextRange.Text = "実行"
btn.OnAction = "RunMacro"
コピー可能な実装コード
DrawRectangleRound.bas
vba
コードを読み込み中...初心者向けコード解説
この関数では、Left、Top、Width、Heightを受け取り、Shapes.AddShapeでmsoShapeRoundedRectangleを作成します。
特徴は、WidthやHeightが負の値でも処理できるようにしている点です。幅や高さが負の場合は、基準点が右上、左下、右下のどこにあるかを判定し、実際に描画するDrawLeft、DrawTop、DrawWidth、DrawHeightへ変換しています。
Sheetを省略した場合はActiveSheetに描画します。明示的に対象シートを渡せるため、別シートへ図形を作る処理にも使えます。
関連記事
注意点
Sheetを省略するとActiveSheetに作図されます。- 負の幅や高さには対応していますが、幅または高さが0の図形は実用上扱いづらくなります。
- 作成後の文字、色、
OnAction、図形名は呼び出し側で設定します。 - 大量に図形を作る場合は、名前付けと削除条件を決めておくと管理しやすくなります。
軽いまとめ
DrawRectangleRoundは、VBAで図形UIを作るときの小さな作図部品です。作成した図形を戻り値で受け取れるため、ボタン、ラベル、ガイド表示などへ応用しやすくなります。
