top of page

​タグ一覧

配列処理(76)

シート・セル操作(34)

階層化フォーム(33)

ファイル操作(31)

開発事例(26)

図形操作(24)

設計思想(14)

講座実施報告(12)

開発効率化(10)

ユーザーフォーム(10)

コード自動生成(10)

ココナラ(9)

数学(9)

文字列操作(8)

イベントプロシージャ(7)

GAS(7)

Webアプリ(6)

副業(5)

アニメーション(5)

技術解説(4)

その他(5)

イミディエイトウィンドウ(4)

OneDrive(4)

Googleスプレッドシート(4)

クリップボード(4)

条件付き書式(4)

介護・福祉(4)

小説(3)

HTML(3)

JavaScript(3)

公開ツール(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

デスクトップアプリ(2)

スクレイピング(1)

スプレッドシート(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

超勉強会(1)

溶接ロボット(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

WebAPI(1)

学校(1)

CAD(1)

PowerShell(1)

python(1)

DrawRectangleRound|角が丸い長方形を作図する

DrawRectangleRound|角が丸い長方形を作図する

この部品でできること

DrawRectangleRound は、指定した座標とサイズで、角が丸い長方形(msoShapeRoundedRectangle)をシート上に自動で作図するExcel VBAの汎用プロシージャです。

  • 左上の座標と幅・高さを渡すだけで、角丸の長方形を1つ作図する

  • 幅・高さにマイナス値を渡した場合でも、基準点がどの頂点になるかを自動で判定して正しい位置に作図する

  • 作図したシェイプ(Shapeオブジェクト)を戻り値で受け取れるので、続けて色や文字を設定できる

 

使いどころ

  • クリックすると処理を実行する「ボタン」を、VBAコードだけで自動的に並べて作図したいとき

  • セルを選択したタイミングで、その近くに操作用のボタンを動的に表示したいとき(EventShowSpinButton_MultiEventSelectChangeUpDownRowがこの用途で使っています)

  • ボタンの数や位置をループ処理で動的に変えたいため、あらかじめ図形を手作業で用意しておけないとき

 

コード

 

使い方・引数

引数は5つです。Sheetだけ省略可能です。

  • Left(Double)・・・基準点のX座標

  • Top(Double)・・・基準点のY座標

  • Width(Double)・・・幅。マイナス値も指定可能

  • Height(Double)・・・高さ。マイナス値も指定可能

  • [Sheet](Worksheet)・・・作図先のシート。省略時はActiveSheet

呼び出し例は次のとおりです。

WidthHeightにマイナス値を渡すと、指定した座標を「右下」「右上」「左下」の基準点として扱い、そこから正しい向きに作図します。例えば DrawRectangleRound(200, 200, -80, -30) なら、(200, 200) を右下の角として、そこから左上方向に幅80・高さ30の長方形を作図します。

 

依存プロシージャ

このコードは自作の依存プロシージャを持たない、自己完結した部品です。上のコードブロックをそのまま標準モジュールに貼り付ければ動作します。

 

応用・注意点

AddShape は本来、LeftTopWidthHeightをすべて左上基準・正の値で渡す前提のメソッドです。DrawRectangleRound では、幅・高さにマイナス値が渡された場合に「基準点がどの頂点にあたるか」を4パターンに分けて座標を補正してからAddShapeを呼んでいます。

この設計にしているのは、呼び出し側で「対象セルの右上を基準にボタンを並べたい」「左下を基準にしたい」といったケースを、呼び出し側でいちいち座標計算をせずに済ませるためです。例えばEventShowSpinButton_Multiでは、選択セルの右上・左下のどちらを基準にボタンを並べるかを引数で切り替えられるようにしていますが、これもDrawRectangleRoundが基準点の違いを吸収してくれるおかげで、呼び出し側のコードがシンプルになっています。

作図した図形は既定でグレー系の塗り・黒縁になります。色や文字を設定したい場合は、戻り値のShapeに対して.Fill.ForeColor.RGB.TextFrame2.TextRangeを続けて設定してください。

 

まとめ

DrawRectangleRound は、座標とサイズを渡すだけで角丸長方形を自動作図できる汎用プロシージャです。基準点がどの頂点であっても正しい位置に作図できるため、セルの右上・左下といった相対位置を基準にボタンを動的に並べたい処理の土台として使えます。

Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

softex-celwareロゴ 透過 横長.png

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page