図形(Shape)
図形(Shape)を縦横比固定で拡大縮小する方法を解説します。ShapeオブジェクトのLockAspectRatioプロパティにmsoTrueを指定してから、Width・Heightプロパティでサイズを変更します。
セル範囲に合わせて図形(Shape)を拡大・縮小する方法を解説します。セル範囲と同じサイズにする場合は、RangeオブジェクトのTop/Left/Width/HeightをShapeオブジェクトの同プロパティに代入します。
図形(Shape)のサイズ変更に使用するWidth/HeightプロパティとScaleWidth/ScaleHeightメソッドの違いを解説します。Width/Heightは変更後のサイズ、ScaleWidth/ScaleHeightは「変更倍率」を指定します。
図形(Shape)を今の位置基準で移動するには、ShapeオブジェクトのTop/Leftに現在位置+移動距離を代入します。他にIncrementLeft・IncrementTopメソッドを使用する方法もあります。
図形(Shape)倍率指定で拡大縮小するにはShapeオブジェクトのScaleWidth・ScaleHeightメソッドを使用します。縦横比を固定して拡大縮小したい場合はLockAspectRatioにmsoTrueを渡してから実行します。
図形(Shape)のサイズを変更するにはWidth・Heightプロパティを使用します。縦横比を固定して拡大/縮小する場合は、LockAspectRatioプロパティにmsoTrueを指定してから設定します。
図形を削除するにはShapeオブジェクトのDeleteメソッドを使用します。Deleteメソッドに引数はありませんので、対象のShapeにそのままDeleteメソッドを実行してください。
図形(Shape)を指定セル範囲の中央へ移動する方法を解説します。
図形(Shape)をコピーする際に使用する、CopyメソッドとDuplicateメソッドの違いを解説します。同シート内での複製ならDuplicateメソッド、別シート・別ブックへの複製ならCopyメソッドという使い分けになります。
図形(Shape)をコピーするには、同シート内にコピーする場合はDuplicateメソッドを使うと簡単に書けます。別シートへコピーする場合は、直接Setが出来ず少々面倒ですがCopyメソッドを使用します。
図形を移動する方法を紹介します。図形の上端・下端位置を設定する、Top・Leftプロパティに移動位置を指定します。移動先の指定方法は3種類あり、絶対座標・今の位置から移動・セル指定で移動が可能です。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
すべての図形を取得する場合、ただShapesを取るだけと表のグループだけを取ってしまうため、GroupItemsを使って中のShapeを取得する必要があります。さらに下層グループがある場合は、再帰呼出が必要になります。
図形がグループ化されているか判定するには、図形自体がグループであるかの判定にはShape.TypeがmsoGroupかどうか、ある図形がグループ内図形かの判定にはParentGroupプロパティがエラーかどうかを調べます。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
グループ内の各図形を取得するには、Shape.GroupItemsプロパティをForEachでループして取得します。グループ内にグループが階層化されている場合は、これを再帰して取得する必要がある点にご注意ください。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
Selection(図形)をFor Each文でループする際、各図形をShapeオブジェクトとして取得するにはShapeRangeプロパティを使用します。このオブジェクトはShapesコレクションと同じように扱うことが出来ます。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
押されたボタンごとに処理を分岐するにはApplication.Callerプロパティを使用します。Application.Callerで取得したオブジェクト名からShapeオブジェクトを取得すれば、表示テキストや位置による分岐も可能です。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
マクロがどこから実行されたかを調べるにはApplication.Callerプロパティを使用します。押されたボタンの名称を調べることができるだけでなく、ユーザー定義関数として呼ばれた際にその入力セルを取得することもできます。
Excel&VBA解説サイト「エクセルの神髄」様出題の問題集、「VBA100本ノック」に対する私の回答と解説のページです。
図形の重なり順を設定するには、ShapeオブジェクトのZOrderメソッドを実行します。最前面・最背面・ひとつ前面・ひとつ背面の4つの実行ができます。図形の前面/背面判定にはZOrderPositionプロパティを使用します。
同じ図形が同じ場所に大量に溜まったファイルを整理する際に、最前面の図形以外を削除するコードを紹介します。タイプや位置などの複数要素の一致判定にはDictionaryを使用するのが便利です。
マニュアルやフロー図などがExcelで作られていると、ほとんどのテキストが図形内にあるということもよくあります。これを一括でセルに出力するマクロを紹介します。
せっかくの同形式グラフなのに、軸上限・軸下限・目盛り幅が違うとグラフ間で比較ができませんので、これを自動設定するマクロを紹介します。120%上限のグラフを100%上限に一括変更するときにも活用できます。
フローチャートなどに折れ線矢印コネクタをよく使いますが、なぜかこの矢印は2回曲がるものしかありません。これに対応するため、ガイド図形を始点と終点に配置した矢印コネクタを挿入するマクロを紹介します。
シート上の図形やオブジェクトの種類を調べる、ShapeオブジェクトのTypeプロパティを解説します。シェイプ.Typeで取得できる数値と対応する定数を調べることで、Shapeがどの種類化を調べることができます。
Excel2024からActiveXコントロールが使用できなくなり、設置したマクロ(イベント)も実行できなくなります。この問題に対応するにあたり、アクティブシートの全ActiveXボタンを一括で置き換えるマクロを紹介します。