VBA EXCEL&VBA

VBA オブジェクト(図形・テキストボックス等)の数を取得する|Excel VBA




今回はひさびさの VBA です。

シート上に配置されている図形やテキストボックスといった「オブジェクト」の数をカウントする方法を解説します。

オブジェクトの数を取得することで、複数のオブジェクトそれぞれに対し色を変えたりテキストを挿入したり様々な処理を行うことが可能になります。


VBAでオブジェクトの数を取得する方法

Countプロパティ

シート上の図形やテキストボックスなど、オブジェクトの数を取得するには、Countプロパティ を使います。

Countプロパティは、コレクション内の要素数を含む整数を返します。
読み取り専用なので値を設定することはできず取得のみ可能です。

「コレクション」は今回のケースで言うと、ActiveSheet.Shapes になるので;

ActiveSheet.Shapes.Count

のように使います。
難しいことは理解できなくても、このあと説明するサンプルコードを見れば一目瞭然です。

オブジェクトの数を取得するサンプルコード

サンプルとして、図形を2つとテキストボックスを1つの合計3つのオブジェクトを配置したシートを用意します。

▲図形×2、テキストボックス×1を配置

このブックの図形・テキストボックスを含む オブジェクトの数 を、VBAを使ってメッセージボックスに表示すると以下のようなコードになります。

Sub Count_Shapes()
  Dim numShape As Long
  '↑ 想定されるオブジェクトの数によってはLongではなくIntegerでもよい  

  numShape = ActiveSheet.Shapes.Count
  MsgBox numShape & "個のオブジェクトがあります"
End Sub

これをエクセル上で実行すると;

このように、取得されたオブジェクトの数「3」を使ってメッセージ表示することができます。

以上で VBAでオブジェクト(図形・テキストボックス等)の数を取得する方法についての解説は終了です。
その他の関連記事と合わせて活用してください。


関連記事・広告



併せて読んでおくとさらに便利

VBAで最終行を取得する方法と そこからできること|Excel VBA
VBA・最終行
VBAで最終行を取得する方法を解説。最終行の行番号を取得できることにより最終行の削除や、最終行までセルを選択したり繰り返したり色々なことが可能になります。

VBAでシート数を取得する方法と そこからできること|Excel VBA
VBA・Countプロパティ
VBAでシート数を取得する方法の解説。VBAを使って各シートに同じ作業をさせる場合は流動的に変化するシート数を取得しておく必要があります。Countプロパティを使って...

VBA カレントフォルダの取得と設定・変更|Excel VBA
VBA・CurDir関数
VBAで カレントフォルダ名 を取得したり、設定(指定)したり変更(移動)したりする方法について解説します。CurDir関数 や ChDirステートメント などの使い方についても触れています。

VBAで空白行を削除する方法|Excel VBA 高速技
VBA・Unionメソッド
VBAを使って空白行の削除方法を解説します。Unionメソッド を使用して空白行を高速で一括削除する方法をサンプルコード付きで解説。ぜひ参考にしてください。

VBA フォルダ内のファイル名一覧の取得|EXCEL VBA
VBA・一覧取得
VBAでフォルダ内のファイル名の一覧を取得する方法を解説。フォルダの中の複数ファイルを自動でひとつずつ展開しながら 連続処理をさせたいときに使える超便利テク!

※その他、関連記事はこの記事の下の方にもあります。




-VBA, EXCEL&VBA
-,