
No.7ベストアンサー
- 回答日時:
いくつか画像が重なっていた場合、一番下の画像のみ残すものです。
3つ以上の重なりは無いとの事なので問題はないかと…-----------------------------------------------------------------------------------------
Sub Sample()
Dim 辞書 As Variant
Dim 番号 As Long
Dim 位置 As String
Set 辞書 = CreateObject("Scripting.Dictionary")
番号 = 1
Do While 番号 <= ActiveSheet.Shapes.Count
位置 = ActiveSheet.Shapes(番号).TopLeftCell.Address
If 辞書.Exists(位置) Then
ActiveSheet.Shapes(番号).Delete
Else
辞書.Add 位置, 位置
番号 = 番号 + 1
End If
Loop
Set 辞書 = Nothing
End Sub
-----------------------------------------------------------------------------------------
No.8
- 回答日時:
No.7 の説明をしておきます。
「ActiveSheet.Shapes.Count」で図形に振られてる最後の番号を得られます。
「ActiveSheet.Shapes(番号)」の図形に振られる番号は、最後部から振られていく、もちろん順番を入れ替えればこの番号も変わる。
最後部から辞書にセルの位置を登録していきます。もし、すでに辞書に登録されていたら削除します。削除するとそれ以降の番号も1減るので、番号を変えなければつぎを確認できます。これを最後の番号まで繰り返します。
もし判らないところが有ったら聞いてください。
No.6
- 回答日時:
少し考えてみました。
ちょうど、#2の画像が最適でしたので説明されていただきますが、
最初、二つの画像で比較していたものを、Union でもとめて、その中から選ぶようにしました。
まだ、おかしな所があるのかもしれません。
'//
Sub TestShpDel()
Dim Rng2 As Range, RngU As Range
Dim a As Range, b As Range, c As Range, d As Range
Dim i As Long, j As Long, k As Long, m As Long, max As Long
Dim Colshp As Collection
Set Colshp = New Collection
With ActiveSheet
.Range("A1").Select '誤動作を防ぐため
j = 1
For i = 1 To .Shapes.Count
If TypeName(.Shapes(i).DrawingObject) = "Picture" Then
Colshp.Add .Shapes(j)
End If
j = j + 1
Next
j = 0
For i = 1 To Colshp.Count - 1
Set a = Colshp(i).TopLeftCell
Set b = Colshp(i).BottomRightCell
If Not RngU Is Nothing Then
Set RngU = Union(RngU, RngU)
Else
Set RngU = Range(a, b)
End If
For j = i + 1 To Colshp.Count
Set c = Colshp(j).TopLeftCell
Set d = Colshp(j).BottomRightCell
Set Rng2 = Range(c, d)
If Not Intersect(RngU, Rng2) Is Nothing Then
Set RngU = Union(RngU, Rng2)
m = Colshp(i).ZOrderPosition
k = Colshp(j).ZOrderPosition
If k > m Then
If max < k And k > 1 Then
max = j
End If
End If
End If
Next
If max > 1 Then
Colshp(max).Select False
End If
max = 0
Set RngU = Nothing
Next
End With
If TypeName(Selection) = "DrawingObjects" Or TypeName(Selection) = "Picture" Then
If MsgBox("削除してよろしいですか?", vbOKCancel) = vbCancel Then Exit Sub
Selection.Delete
Else
MsgBox "削除対象が見つかりません。", vbExclamation
End If
End Sub
'//
画像では、1と4が削除対象になります。
ただ、画像の見えない範囲が、誤動作を産む可能性があります。

No.3
- 回答日時:
No.2 の追補(1つの回答に図を1つしか載せられないので)
下図のように人間が見た目重なっていない場合はどうするのでしょうか?
ちなみにどちらが最前列になっているか判りますか?

No.2
- 回答日時:
全部が同じところに重なっているなら簡単に出来ますが、グループ化されていない状態でバラバラに配置されているならばほぼ無理です。
(どれとどれが重なっているかの判断が難しいので…)例えば、下図のような場合はどうするのでしょうか?

No.1
- 回答日時:
こんにちは
ご質問文だけだと、いろいろなケースが想定されるので、具体的な処理内容は決められないように思います。
単純に、シート内の最前面にある画像を削除すればよいだけなら、以下によるとインデックスが最大の画像を削除すればよさそうです。
https://msdn.microsoft.com/ja-jp/VBA/Excel-VBA/a …
(重なりがあろうがなかろうが、最前面の画像が削除されるでしょう)
重なっていることを前提とする場合は、
指定された画像と重なっている画像の中から最前面のものを削除するのなら、画像を指定し、それと重なっているものをチェックして、その中で最前面のものを削除するという処理になるでしょう。
あるいは、画像を指定せずにシート内で重なりあう関係にある画像を全て探し(複数個所に点在する場合もあり得る)、それぞれの最前面のものを削除するとか。(このケースでは、一度に複数の画像が削除されることがある)
一方で、重なりを判定するのにも、各画像の四隅の矩形で判断してよいのか、画像の実態で判断しなければいけないのかでも考え方はまったく異なるものになるでしょう。
「画像」が写真などの場合であれば矩形の判定で済みそうですが、画像の実態で重なりをチェックしなければならないとなると、相当に難しい処理になるものと予想されます。
(可能なのか不明です)
重なっているか否かの判断に関しても、図形AとB、図形BとCが重なっている状態で、図形AとCは直接には重なっていないような場合に、AとCは重なっているとみなすのかどうかといった点についても考え方は様々と言えるでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBA 指定した列にある日時データから時間を削除する方法について 4 2022/04/14 11:17
- Excel(エクセル) VBA 文字列変換と指定した列にある日時データから時間を削除する方法について 2 2022/04/14 15:23
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Android(アンドロイド) GooglePixel6aで写真が勝手に消えた 5 2023/04/05 15:48
- Excel(エクセル) 【マクロ】プリントスクリーンした画像をエクセルに貼付して印刷したい 6 2022/11/30 20:11
- Excel(エクセル) Excel条件が一致したセルの処理ついて 3 2023/06/13 10:33
- Excel(エクセル) エクセル、画像ファイル名の書かれたセル(複数個所)に画像を一括で表示させる方法 1 2023/04/19 00:19
- 写真・ビデオ スマホは、auのアンドロイドです。 正月に、干支の兎年のスタンプや画像をダウンロードしました。(10 1 2023/02/03 20:19
- LINE スマホを替えてから、LINEの画像が表示されなくなりました 1 2022/10/04 13:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
フェラチオは妻の義務ですか?...
-
風俗ってどこまでの接客をします?
-
女性が喘いでいるときの男性の...
-
高校生です。彼氏の前で初めて...
-
男性に質問です! 電話だけで勃...
-
夫婦の夜の営みについてです。 ...
-
彼氏と毎日セックスするのは異...
-
彼と体の相性が良すぎて悩んで...
-
兄妹や姉弟で、キスやエッチし...
-
ソープランドについて
-
Hの時、彼女が濡れやすいのは嬉...
-
初体験って気持ちいいの? 男の...
-
キスすれば相手を好きでなくて...
-
男性に質問です。 デリヘルって...
-
ふぇらでイカセテくれる うまい...
-
彼氏が前戯をしてくれない
-
実家住まいの場合Hはホテル以外...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
男の人はやってるとき 彼女がす...
-
男性の方に質問です。 バックで...
-
彼女が感じやすくて可愛い
-
風俗ってどこまでの接客をします?
-
高校生です。彼氏の前で初めて...
-
フェラチオは妻の義務ですか?...
-
女性が喘いでいるときの男性の...
-
夫婦の夜の営みについてです。 ...
-
彼氏と毎日セックスするのは異...
-
男性に質問です! 電話だけで勃...
-
兄妹や姉弟で、キスやエッチし...
-
初体験って気持ちいいの? 男の...
-
彼と体の相性が良すぎて悩んで...
-
男性に質問です。 デリヘルって...
-
ソープランドについて
-
キスすれば相手を好きでなくて...
-
もし週1しか恋人と会えなかった...
-
実家住まいの場合Hはホテル以外...
-
彼女がフェラをしてくれません。
-
彼氏が前戯をしてくれない
おすすめ情報
すみません説明不足で・・・
画像は重なっていないものもあれば、重なっているものもバラバラであります。
重なっている時は、2つの画像が重なっていて、3つ以上の重なりはありません。
画像が重なっていないものは、削除しないで欲しいです!
難しくてすみません。
はい、画像が貼り付けられたセルを基準に重なっているかの判断でお願いします。
イメージとしては四角い画像の上に小さい画像が重なっている感じです。
カタログの様に複数規則正しく表示されています。
はい③と④の重なりは無いです。
①の上に小さい画像で②が重なっています。