
I5:I24の範囲内のオートシェイプの数を数え、I25に合計数を表示させるマクロを作っているのですが、どうしても範囲指定の仕方が分かりません。教えてください。
'オートシェイプの合計数算出
Dim shp As Object
Dim cnt As Long
For Each shp In ActiveSheet.Shapes
If shp.Type = msoAutoShape Then
If shp.TopLeftCell.Column = 9 Then
cnt = cnt + 1
End If
End If
Next shp
Range("I25").Value = cnt
このマクロのどこにどう入れればよいでしょうか?
No.1ベストアンサー
- 回答日時:
TopLeftCellプロパティとIntersect メソッドを使って
図形の左上端が範囲内にあるか判定します
Dim shp As Object
Dim cnt As Long
For Each shp In ActiveSheet.Shapes
If shp.Type = msoAutoShape Then
If Not Intersect(shp.TopLeftCell, Range("I5:I24")) Is Nothing Then
cnt = cnt + 1
End If
End If
Next shp
Range("I25").Value = cnt
図形の右下も含めるのならBottomRightCellプロパティ
も条件に含めてください
No.3
- 回答日時:
もともとオートシェイプなどの、シート上のオブジェクトは、シートに浮かんで要るようなもので、EXCELのシートのセルとは何の関係もないものです。
すなわちセルの属性ではない。しかしそれでは不便な場合もあるので、
Sub test01()
MsgBox ActiveSheet.Shapes.Count
MsgBox ActiveSheet.Shapes(1).Name
MsgBox ActiveSheet.Shapes(1).TopLeftCell.Address
MsgBox ActiveSheet.Shapes(1).BottomRightCell.Address
MsgBox ActiveSheet.Shapes(1).BottomRightCell.Column
End Sub
をやるとわかるように、位置関係について、オブジェクト側から
TopLeftCell、BottomRightCellの属性を使えるようになっている。
ほかに「オートシェイプの書式設定」の「プロパティ」の「セルにあわせて・・」のような仕組みがあるだけである。
ーー
だから、質問の、「範囲指定の仕方と言っても、TopLeftCell等の番地が、質問者の考える範囲内にある(InterSectする)か聞くほかない。
これもオブジェクトの位置を動かすと変わる不安定なものである。
ーー
InterSectを使わないなら、ActiveSheet.Shapes(1).TopLeftCellなどのRowとColumnについて、列について2よりで大6より小、且つ行について3より大で8より小のような判別(IFで)プログラムでやることになる。
ーーー
TopLeftCellとBottomRightCell のどちらを問題にするのか、両方を考えるかの問題は、当然ある。
No.2
- 回答日時:
>範囲内のオートシェイプの数
この表現はちょっとあやふやです。
範囲に完全に入っているものの数か
範囲に少しでも入っているものの数か
どちらでしょう。
で、2通り数えるコードを。。
'------------------------------------------
Sub Test()
Dim Shp As Shape
Dim Cnt1 As Long
Dim Cnt2 As Long
Dim myRange As Range
Set myRange = Range("H1:J20") '●調査範囲、適宜に変更
For Each Shp In ActiveSheet.Shapes
If Shp.Type = msoAutoShape Then
'●範囲内に完全に入っているSHAPE
If Not Intersect(Shp.TopLeftCell, myRange) Is Nothing And _
Not Intersect(Shp.BottomRightCell, myRange) Is Nothing Then
Cnt1 = Cnt1 + 1
End If
'●範囲内に一部でも入っているSHAPE
If Not Intersect(Shp.TopLeftCell, myRange) Is Nothing Or _
Not Intersect(Shp.BottomRightCell, myRange) Is Nothing Then
Cnt2 = Cnt2 + 1
End If
End If
Next Shp
Range("I25").Value = Cnt1
Range("I26").Value = Cnt2
End Sub
'-----------------------------------------------
以上です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 1 2023/04/27 13:37
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Dateserialで データ抽出 2 2022/06/26 21:07
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 配列の勉強をしています。使用する変数の意味、検索条件の書き方が難しいです。 2 2022/09/15 14:06
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
このQ&Aを見た人はこんなQ&Aも見ています
-
一回も披露したことのない豆知識
あなたの「一回も披露したことのない豆知識」を教えてください。
-
許せない心理テスト
皆さんがこれまで受けた中で許せない心理テストがあれば教えていただきたいです。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
自分用のお土産
国内や海外に旅行へ行った時、自分用のお土産ってどれくらい買いますか?
-
オブジェクトをカウントする
Excel(エクセル)
-
Excelで特定のオートシェイプのみカウントする方法はありますか?
Excel(エクセル)
-
エクセル マクロで、選択している画像の数を数えたい
Excel(エクセル)
-
-
4
エクセルで○や×の図形の集計は出来ますか?
Excel(エクセル)
-
5
オートシェイプを色別に個数をカウントすることは出来ますか?
Excel(エクセル)
-
6
Excel(VBA)
Excel(エクセル)
-
7
エクセルマクロで指定範囲内の図形を削除
Excel(エクセル)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
オートシェイプに名前を付け名前毎に個数をカウントしたい
Excel(エクセル)
-
10
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
11
VBAで、なぜかSendkeyが効きません。
PowerPoint(パワーポイント)
-
12
[ EXCEL VBA ] 図形を読み込む順番を制御するには?
Visual Basic(VBA)
-
13
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
14
指定範囲内で図形等を削除する方法は?
その他(Microsoft Office)
-
15
セルをクリック⇒そのセルに入力された文字を○で囲む
Excel(エクセル)
-
16
マウスで選択した図形のみVBAで移動したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・昔のあなたへのアドバイス
- ・字面がカッコいい英単語
- ・許せない心理テスト
- ・歩いた自慢大会
- ・「I love you」 をかっこよく翻訳してみてください
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・はじめての旅行はどこに行きましたか?
- ・準・究極の選択
- ・この人頭いいなと思ったエピソード
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
年代と年台・・・どちらが正し...
-
「余年」の意味について教えて...
-
離れた列での最大値の求め方
-
COUNTIF関数 ある範囲の数値で...
-
エクセルで(~以上,~以下)...
-
お教えで来る範囲内で 文言が変...
-
エクセルでPrint Area と表示さ...
-
EXCELで最大値と最小値を除いた...
-
【数学】 Q.t=2ˣ+2⁻ˣ とし...
-
基礎問題精講、演習問題47(2)(i...
-
文字係数の2次不等式についてで...
-
サイン類似度
-
三角比と二次関数の融合問題教...
-
整式にはx^0、つまり整数のみは...
-
2次関数
-
指定範囲内のオートシェイプを...
-
絶対値のついた2つの不等式に...
-
図形の問題の求め方を教えてく...
-
三角関数 -3分のπって3分の5...
-
方程式 e^x=x+1 の解
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三角関数の範囲について、 0≦x≦...
-
年代と年台・・・どちらが正し...
-
エクセルで(~以上,~以下)...
-
「余年」の意味について教えて...
-
離れた列での最大値の求め方
-
三角関数 -3分のπって3分の5...
-
シグマの範囲が2nまでの関数で...
-
COUNTIF関数 ある範囲の数値で...
-
2重積分の変数変換の範囲につ...
-
判別式の使う時とか使わない時...
-
X4乗=64の解き方を教えてほし...
-
高校数学、三角関数についてで...
-
エクセルでPrint Area と表示さ...
-
お教えで来る範囲内で 文言が変...
-
X3乗―2=0
-
極座標ではr>0の時のみ考えて、...
-
EXCELで最大値と最小値を除いた...
-
文字係数の2次不等式についてで...
-
エクセルに入力されたリストか...
-
基礎問題精講、演習問題47(2)(i...
おすすめ情報