プロが教えるわが家の防犯対策術!

マクロで、複数選択している図形の数はSelection.ShapeCountで選択した図形の数がでますが、複数選択している図形のなかで、画像のみの数を取得したいのですが、どのように記述すればいいのか分かりません。教えてください。よろしくお願いします。

質問者からの補足コメント

  • Fuji Lin様 回答ありがとうございます。
    こちらの表記に誤りがありました。
    Selection.ShapeRange.Count
    でした。申し訳ありません。グループ化などはやらないので、ただ単に一つのアクティブシートで複数選択した図形の内の画像の数のみを取得したいです。

      補足日時:2024/01/28 16:12

A 回答 (2件)

サンプルです。



Sub Sample()
 Dim shp As Object
 Dim cnt As Long
 For Each shp In Selection.ShapeRange
  ' 13:画像 11:リンク画像
  If shp.Type = 13 Or shp.Type = 11 Then
   cnt = cnt + 1
  End If
 Next
 Debug.Print "画像は " & cnt & " 個です"
End Sub
    • good
    • 1
この回答へのお礼

回答ありがとうございます。SelectionもFor Eachで数えるのですね。後ほどPCでやってみます。

お礼日時:2024/01/29 07:05

こんにちは



>Selection.ShapeCountで選択した図形の数がでますが
当方の環境(Excel2019)では、カウントできませんね。
ですので、以下はマクロそのものが異なっている環境下の可能性がありますので、ご参考までに・・・


選択対象の可能性をどこまで広げて(=グラフやフォーム要素など)考えるのかにもよりますが、一般化して考えるのなら・・
1)Selection内の個々の要素をVarTypeなどでShapeのみに絞り込む
2)ShapeStyleで図形以外(画像等)を絞り込む
(ShapeStyleだけだと3D図形やSmartArtなども同じ範疇になります。)
(グループ化されているオブジェクトは、まず、グループが要素になりますので
 グループ内を調べないと特定はできません。)
3)確実に図形だけを選別するなら、ActiveSheet.Picturesで存在する画像要素を
 取得できますので、こちらと照合して画像であることを特定すれば良いでしょう。

※ 3)では「グループ化」されたグループ内の画像は取得できないようですので、注意が必要になります。
※ 選択される対象の可能性が限られた状態であるなら、上記のうち不要となる部分は省くことが可能と思います。
※ いきなり3)のチェックだけでカウントする方法も考えられると思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。こちらの表記に誤りがありました。Selection.ShapeRange.Countの間違いでした。回答していただきましたが、大変申し訳ありませんでした。

お礼日時:2024/01/28 16:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A