他のオブジェクトよろしく、図形の場合もHeight、Widthプロパティでサイズの変更が可能です。
Height、Widthプロパティの使い方
図形の高さの変更
Shapeオブジェクト(またはShapeRangeコレクション).Height = 値
Shapeオブジェクト(またはShapeRangeコレクション).Height = 値
図形の幅の変更
Shapeオブジェクト(またはShapeRangeコレクション).Width = 値
素直に指定すれば変更・取得できます。Shapeオブジェクトなどについては該当記事参照。
サイズの単位
![vba width height1](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height1.png)
こういった図形があるものとします。
![vba width height2](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height2.png)
図形をクリックして書式タブの一番右にあるサイズを見ると、Cm単位でサイズが表示されるんですが、
' vba
ActiveSheet.Shapes(1).Width = 10
たとえばこのようなコードで、インデックス番号1の図形のサイズを「10」にした場合、
![vba width height3](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height3.png)
この「10」の単位はポイント(1/72インチ)なので、こういうことになります。
![vba width height4](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height4.png)
ちなみに10ポイントはCmでこれぐらい。1ポイント=約0.35mmです。
サイズの取得
' vba
ActiveSheet.Shapes(1).Width = ActiveSheet.Shapes(2).Width
このサイズの問題を解決する簡単な方法として、基準となる図形を決めておくというものがあります。
オブジェクト.サイズは値の取得にも使えます。この式の場合、図形(2)の幅を図形(1)に代入するという意味になります。
オブジェクト.サイズは値の取得にも使えます。この式の場合、図形(2)の幅を図形(1)に代入するという意味になります。
単位の問題の対処
![vba width height5](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height5.png)
上のコードを実行すると、図形1の幅が図形2と一致し、結果サイズの足並みがそろいます。
' vba
'1cmにしたい
ActiveSheet.Shapes(1).Width = (1 * 72) * (100 / 254)
あとは、1ポイントは1/72インチなので72倍してインチに換算し、1インチは2.54cmなので100/254倍してcmに換算する、というワザでも変更可能です。
複数図形の指定
' vba
'図形1、2を1cmにしたい
ActiveSheet.Shapes.Range(Array(1, 2)).Height = (1 * 72) * (100 / 254)
複数図形のサイズを変更するには、ShapeRangeコレクションを使います。
具体的にはこのように、Shape.Range(Array())の中で図形をそれぞれ指定してやれば、
具体的にはこのように、Shape.Range(Array())の中で図形をそれぞれ指定してやれば、
![vba width height6](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height6.png)
複数の図形のサイズ(この場合高さ)を同時に変更することが可能です。
' vba
ActiveSheet.Shapes.SelectAll
Selection.Width = 50
Selection.Height = 50
全部まとめてサイズ変更したければ、一度ShapesをSelectAllして全選択してから、選択範囲(Selection)に対してサイズを指定します。
![vba width height7](https://sunagitsune.com/wp-content/uploads/2021/10/vba-width-height7.png)
実行結果です。
![](https://sunagitsune.com/wp-content/uploads/2021/05/innovation-561388_1280-160x90.jpg)
Excel(エクセル):図形
Excelでは、図形という機能を使うことで四角形や丸、矢印などのオブジェクトをシート状に配置することができます。セルの形状を無視して配置できるので、フローチャートや装飾、注釈などアイデア次第でさまざまな用途に利用できます。
図形作成・操作...
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
コメント