【エクセルVBA】シート上にある図形を一括グループ化する方法!

このページではVBAを使って、エクセルシート上にある複数の図形を自動でグループ化する方法をご紹介していきます。

シート上の図形を一括グループ化するという概要図

シンプルな図形だけでなく、グラフなんかが混ざっていても対応可能です。

 

それではさっそくやっていきましょう。

 

※VBAの使い方から勉強したいという方はまずは以下からご覧ください。

 

スポンサーリンク

基礎スキル①図形の数を数える方法

今回はシート上にあるすべての図形をグループ化していきます。

それを行うにあたって、まずはシート上に何個の図形(グラフ)があるのかを確認する必要があります。

 

というわけでその方法をご紹介します。

〇シート上の図形の数を数える方法

ActiveSheet.shapes.Count

 

このスキルはのちほど紹介するサンプルコードに登場します。

 

スポンサーリンク

基礎スキル②複数図形をグループ化する方法

次は複数の図形をグループ化する方法をご紹介します。

 

〇シート上の図形をグループ化する方法

ActiveSheet.shapes.Range(グループ化する図形番号の配列).Group
※具体例(1番目と2番目の図形をグループ化する場合)
ActiveSheet.shapes.Range( Array(1, 2) ).Group

今回はシート上に図形が何個あるかわからない状態で実施しますので、上記のArray(1, 2)の部分をどうやって作っていくかがポイントになります。

⇒先ほどの図形を数えるスキルを使って対応していきます。

 

スポンサーリンク

シート上の図形を一括グループ化するサンプルVBAコード

それではここまで紹介したスキルを使って、シート上の図形を一括グループ化してみましょう。

 

以下がそのサンプルコードです。

※このコードは図形が100個までしか対応していません。100個以上ある場合は、2行目の数値を増やしてください。

Sub shapes_group()
    Dim shape_array(100) As Variant
    'グループ化するための配列を作成
    For i = 1 To ActiveSheet.shapes.Count
        shape_array(i) = i
    Next
    'グループ化実行
    ActiveSheet.shapes.Range(shape_array).Group
End Sub

 

4~6行目で図形を数えるスキルを使い、グループ化用配列を作成しています。

そして8行目でグループ化を実施しています。

 

スポンサーリンク

サンプルコードの実行結果確認

それでは最後にサンプルコードを実行してみましょう。

 

まずはシンプルな図形だけがある場合。

サンプルコードの実行結果①

問題なくグループ化できていますね。

 

次は、図形も含ませてみましょう。

同じコードを実行します。

サンプルコードの実行結果②

こちらも問題なく対応できましたね。

 

スポンサーリンク

おわりに

というわけで今回は、エクセルVBAをつかってシート上の図形を一括グループ化する方法をご紹介しました。

 

また以下の記事では、ここでグループ化した図形を画像として出力する方法も解説しています。

興味があればこちらもご覧ください。

 

このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

 

今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。

⇒興味をもった方は【ヒガサラ】で検索してみてください。

確実にスキルアップできるはずです。

 

最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

タイトルとURLをコピーしました