和風スパゲティのレシピ

日本語でコーディングするExcelVBA

図形(Shape)

図形(Shape)を縦横比固定で拡大縮小する - LockAspectRatio

図形(Shape)を縦横比固定で拡大縮小する方法を解説します。ShapeオブジェクトのLockAspectRatioプロパティにmsoTrueを指定してから、Width・Heightプロパティでサイズを変更します。

セル範囲に合わせて図形(Shape)を拡大・縮小する

セル範囲に合わせて図形(Shape)を拡大・縮小する方法を解説します。セル範囲と同じサイズにする場合は、RangeオブジェクトのTop/Left/Width/HeightをShapeオブジェクトの同プロパティに代入します。

Width/HeightとScalewidth/Heightの違い

図形(Shape)のサイズ変更に使用するWidth/HeightプロパティとScaleWidth/ScaleHeightメソッドの違いを解説します。Width/Heightは変更後のサイズ、ScaleWidth/ScaleHeightは「変更倍率」を指定します。

図形(Shape)を現在の位置基準で移動する - IncrementLeft/IncrementTop

図形(Shape)を今の位置基準で移動するには、ShapeオブジェクトのTop/Leftに現在位置+移動距離を代入します。他にIncrementLeft・IncrementTopメソッドを使用する方法もあります。

図形(Shape)を倍率指定で拡大縮小する - ScaleWidth/ScaleHeight

図形(Shape)倍率指定で拡大縮小するにはShapeオブジェクトのScaleWidth・ScaleHeightメソッドを使用します。縦横比を固定して拡大縮小したい場合はLockAspectRatioにmsoTrueを渡してから実行します。

図形(Shape)のサイズを変更する - Width/Height

図形(Shape)のサイズを変更するにはWidth・Heightプロパティを使用します。縦横比を固定して拡大/縮小する場合は、LockAspectRatioプロパティにmsoTrueを指定してから設定します。

図形(Shape)を削除する - Delete

図形を削除するにはShapeオブジェクトのDeleteメソッドを使用します。Deleteメソッドに引数はありませんので、対象のShapeにそのままDeleteメソッドを実行してください。

図形(Shape)を指定セル範囲の中央へ移動する

図形(Shape)を指定セル範囲の中央へ移動する方法を解説します。

Shape.CopyとShape.Duplicateの違い

図形(Shape)をコピーする際に使用する、CopyメソッドとDuplicateメソッドの違いを解説します。同シート内での複製ならDuplicateメソッド、別シート・別ブックへの複製ならCopyメソッドという使い分けになります。

図形(Shape)をコピーする - Duplicate/Copy

図形(Shape)をコピーするには、同シート内にコピーする場合はDuplicateメソッドを使うと簡単に書けます。別シートへコピーする場合は、直接Setが出来ず少々面倒ですがCopyメソッドを使用します。

図形(Shape)を移動する - Top/Left

図形を移動する方法を紹介します。図形の上端・下端位置を設定する、Top・Leftプロパティに移動位置を指定します。移動先の指定方法は3種類あり、絶対座標・今の位置から移動・セル指定で移動が可能です。

19本目:図形のコピー

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

グループ内を含むすべての図形(Shape)を取得する

すべての図形を取得する場合、ただShapesを取るだけと表のグループだけを取ってしまうため、GroupItemsを使って中のShapeを取得する必要があります。さらに下層グループがある場合は、再帰呼出が必要になります。

図形がグループ化されているか判定する-Type/Child

図形がグループ化されているか判定するには、図形自体がグループであるかの判定にはShape.TypeがmsoGroupかどうか、ある図形がグループ内図形かの判定にはParentGroupプロパティがエラーかどうかを調べます。

29本目:画像の挿入

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

グループ内の各Shapeを取得する - GroupItems

グループ内の各図形を取得するには、Shape.GroupItemsプロパティをForEachでループして取得します。グループ内にグループが階層化されている場合は、これを再帰して取得する必要がある点にご注意ください。

37本目:グラフの色設定

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

選択中の図形(Shape)を処理する - ShapeRange

Selection(図形)をFor Each文でループする際、各図形をShapeオブジェクトとして取得するにはShapeRangeプロパティを使用します。このオブジェクトはShapesコレクションと同じように扱うことが出来ます。

64本目:リンクされた図(カメラ機能)

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

押されたボタンごとに処理を分岐する - Caller

押されたボタンごとに処理を分岐するにはApplication.Callerプロパティを使用します。Application.Callerで取得したオブジェクト名からShapeオブジェクトを取得すれば、表示テキストや位置による分岐も可能です。

76本目:ボタンの表示名の位置へ移動

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

マクロの実行元(実行ボタン)を取得する - Caller

マクロがどこから実行されたかを調べるにはApplication.Callerプロパティを使用します。押されたボタンの名称を調べることができるだけでなく、ユーザー定義関数として呼ばれた際にその入力セルを取得することもできます。

90本目:セルに重なっている画像の削除

Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。

図形の前面/背面を設定・変更する - ZOrder

図形の重なり順を設定するには、ShapeオブジェクトのZOrderメソッドを実行します。最前面・最背面・ひとつ前面・ひとつ背面の4つの実行ができます。図形の前面/背面判定にはZOrderPositionプロパティを使用します。

重なった図形を最前面のもの以外削除する

同じ図形が同じ場所に大量に溜まったファイルを整理する際に、最前面の図形以外を削除するコードを紹介します。タイプや位置などの複数要素の一致判定にはDictionaryを使用するのが便利です。

すべての図形内テキストをセルに出力するマクロ

マニュアルやフロー図などがExcelで作られていると、ほとんどのテキストが図形内にあるということもよくあります。これを一括でセルに出力するマクロを紹介します。

グラフ軸目盛りの範囲・間隔を統一するマクロ

せっかくの同形式グラフなのに、軸上限・軸下限・目盛り幅が違うとグラフ間で比較ができませんので、これを自動設定するマクロを紹介します。120%上限のグラフを100%上限に一括変更するときにも活用できます。

一回だけ曲がるL字矢印コネクタを挿入するマクロ

フローチャートなどに折れ線矢印コネクタをよく使いますが、なぜかこの矢印は2回曲がるものしかありません。これに対応するため、ガイド図形を始点と終点に配置した矢印コネクタを挿入するマクロを紹介します。

図形(Shape)の種類を調べる - Typeプロパティ

シート上の図形やオブジェクトの種類を調べる、ShapeオブジェクトのTypeプロパティを解説します。シェイプ.Typeで取得できる数値と対応する定数を調べることで、Shapeがどの種類化を調べることができます。

ActiveXボタンをフォームボタンに置換するマクロ

Excel2024からActiveXコントロールが使用できなくなり、設置したマクロ(イベント)も実行できなくなります。この問題に対応するにあたり、アクティブシートの全ActiveXボタンを一括で置き換えるマクロを紹介します。