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

Excel フローチャート

今回はExcelのフローチャートの図形を指定した場所へ複製する専用ボタンを作成する手順をご紹介します。

エクセルで手動で図形を複製する方法はいくつかありますが、マウスとキーボードで行うには図形を選択し「Ctrl」 +「Shift」キーを押しながら図形をドラッグする方法と、ショートカットキーで行うには「Ctrl」キーを押しながら「D」ボタンを押す方法などがあります。

「Ctrl」 +「Shift」キーを押しながら図形をドラッグする操作を「マクロの記録」をすると次のようなコードが生成されます。

Sub Macro1()
'
' Macro1 Macro
'

'
Selection.ShapeRange.Duplicate.Select
Selection.ShapeRange.IncrementLeft 148.5
End Sub

このコードを基にして図形を指定した場所へ複製できるマクロを作成してボタンに登録し、簡単にマクロを実行できるようにしたいと思います。

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

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

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

On Error Resume Next '図形を選択していなくてエラーが発生しても中断せずに次の行を実行する。

If Selection.ShapeRange.Count > 0 Then '選択されている図形が1つ以上あるかを判定する。

If Err.Number = 0 Then 'エラーが発生していないときは。

Dim flow As Shape

For Each flow In Selection.ShapeRange '選択範囲内の図形に対して処理を繰り返す。

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

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

End With

Next

Else '図形が選択されていなくてエラーが発生した時は。

MsgBox "図形を選択してから実行してください。" 'メッセージを表示して終了する。

End If

End If

On Error GoTo 0 'エラーの無視を解除する。

End Sub

図形を複製するボタンを作成してマクロを登録

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

「挿入」タブ → 「図形」 → 「四角形」の中の「角丸四角形」を選択してシート上に「ボタン」を配置します。

ボタンの用途がわかりやすいようにボタンを「右クリック」して「テキストの編集」で「▷」マークを入力します。ボタンの色は自由に設定してください。

ボタンを右クリックして右クリックメニューから「マクロを登録」を選択します。

マクロ名から「図形を180ピクセル右に複製する」を選択し「OK」ボタンを押してマクロを登録をします。

登録したマクロの実行

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

図形(端子)を選択してボタンをクリックします。

右方向に180ピクセルずれた位置に図形が複製されました。

「Ctrl」キー + 「図形の複数選択」してボタンを押すと図形をまとめて複製することもできます。

マクロのコードの「.IncrementLeft (180 * 0.7584)」の「180」の部分を書き換えれは右方向にずれる位置を自由に設定できるので、セルの幅に合わせて調整してみてください。

前回のブログで投稿した「フローチャートの図形を指定した場所へ移動させる専用ボタン」と今回の「フローチャートの図形を指定した場所へ複製する専用ボタン」を組み合わせて使えば、より簡単にフローチャートの作成が出来るようになると思います。