和風スパゲティのレシピ

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

図形(Shape)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

オブジェクトがActiveXコントロールか判定する

Excel2024からActiveXコントロールが使用できなくなるにあたり、指定の図形がActiveXコントロールか判定する方法と、ブック内のすべてのActiveXコントロールを取得する方法をそれぞれ解説します。

図形内テキストの不要な改行を制御するマクロ

図形内テキストが不要な位置で改行されてしまう問題は「テキストを図形からはみ出して表示する」「図形内でテキストを折り返す」の設定である程度抑えることができます。これを一括実行するマクロを紹介します。

テキストを図形からはみ出して表示する

図形内テキストの改行を制御するとき「テキストを図形からはみ出して表示する」をチェックし、「図形内でテキストを折り返す」のチェックを外す方法が便利です。これをVBAから設定する方法を解説します。

特定のセル範囲内にある図形を処理/選択する

Shapeの位置がセル範囲内にあるかどうかを判定して、その範囲内のShapeを処理する方法を解説します。TopLeftCell/BottomRightCellでShapeを含む最小のセル範囲を取得し、それとセル範囲のIntersectが一致するかを判定して処理を行います。

すべての図形(オブジェクト)を選択するマクロ

すべての図形オブジェクト(Shape)を選択するマクロを紹介します。すべての図形を削除したり、一括で移動したりするときに便利なマクロですね。この処理には専用のメソッド「Shapes.SelectAll」が用意されているため、コードはとても簡単です。

すべての図形(オブジェクト)を削除する

すべての図形オブジェクトを一括で削除するコードを紹介します。すべて削除したい場合はActiveSheet.DrawingObjects.Deleteで簡単に実行できます。グラフだけを残すような場合は、ForEachでひとつずつShape.Typeを判定して削除します。

Shapesにはドロップダウンリストの▼が含まれる

For Eachで全図形を処理したとき変な動きをする、Shapes.Countを数えるとなぜか1個多い、入力規則の▼が消えてリストから選べない、あたりにお困りの方は、Shapesがドロップダウンリストの▼を含む罠に落ちていないかご確認ください。