【Excel VBA】フローチャートの図形をワンクリックで複製するマクロボタンの作成方法(後編)

Excel フローチャート

2026年2月7日のブログ記事の「フローチャートの図形をワンクリックで複製するマクロボタンの作成方法(前編)」では、フローチャートの図形を選択してからボタンをクリックして図形の複製を行っていました。

今回はフローチャートの図形を自動で選択して、シート上の全ての図形を複製するマクロボタンを作成したいと思います。

標準モジュールに図形をコピーするマクロを作成

VBA編集画面(Visual Basic Editor)を立ち上げて「挿入」タブ →「標準モジュール」で標準モジュールを作成し、次のコードをコピーして貼り付けます。

Sub 全ての図形を180ピクセル右に複製する()

Dim flow As Shape

For Each flow In ActiveSheet.Shapes 'シート上の全ての図形に対して処理を繰り返します。

If flow.Type <> msoFormControl And flow.Type <> msoOLEControlObject Then '図形のタイプがフォームコントロール、ActiveXコントロールの場合は次の処理を行いません。

With flow.Duplicate '図形を複製(コピー)してこれ以降の設定を行います。

.Top = flow.Top '複製元の図形と高さを揃えます。
.IncrementLeft (180 * 0.7584) '複製して新しくできた図形をセルの幅10個分右側にずらします。

End With

End If

Next

End Sub

エクセルシートに図形を配置

エクセルシートを表示し、セルの幅は18ピクセルで設定して、フローチャートの図形「端子」「判断」「処理」と「矢印」を配置します。

ボタンを作成してマクロを登録

「開発」タブ →「挿入」→「ボタン(フォームコントロール)」をクリックします。

ボタンを配置したい場所をマウスでドラッグします。

マクロの登録ダイアログボックスが表示されるので「全ての図形を180ピクセル右に複製する」を選択して「OK」ボタンを押します。

ボタンにマクロが登録されました。

登録したマクロの実行

マクロを登録が終わったので、図形が複製できるのか確認をしてみます。

ボタン1をクリックすると右方向の180ピクセルずれた位置に全ての図形が複製されました。

今回の方法は図形をまとめて複製したい場合に便利なので、「フローチャートの図形をワンクリックで複製するマクロボタンの作成方法(前編)」と合わせてご活用ください。