| 
    
     |  | こんにちは。 
 おお〜、これこれ、と思いましたが、ちょっと違うような...。
 これだと図形類が、セル範囲にすっぽり入ってないとダメですね。
 ちょっとでもひっかっていたらってやつがあったと思うんですけど...。
 確かりんさんはそんな風に言っていたような気がします。
 試してみなかったんで、その辺はあいまいですが。
 
 これでよかったら、こんな感じに配列にセットすれば良いです.
 
 Sub 範囲選択()
 
 Dim Sh As Shape, r1 As Range, r2 As Range
 Dim ObjTb() As Variant, Ct As Integer
 'On Error GoTo errout
 
 If ActiveSheet.ProtectContents Then
 Else
 If TypeName(Selection) = "Range" Then
 'Selection.Clear
 If TypeName(Selection) = "Range" Then
 If ActiveSheet.Shapes.Count > 0 Then
 For Each Sh In ActiveSheet.Shapes
 '図形が完全に範囲に含まれる場合は削除する
 '図形左上セルのチェック
 Set r1 = Application.Intersect(Selection, _
 Sh.TopLeftCell)
 '図形右下セルのチェック
 Set r2 = Application.Intersect(Selection, _
 Sh.BottomRightCell)
 If r1 Is Nothing Or r2 Is Nothing Then
 '左上セルまたは右下セルが選択範囲の外にある場合は無視
 '両方外にある場合も無視
 Else
 Ct = Ct + 1
 ReDim Preserve ObjTb(1 To Ct)
 ObjTb(Ct) = Sh.Name
 End If
 Next
 End If
 End If
 Else
 'Selection.Delete
 End If
 End If
 On Error Resume Next
 If UBound(ObjTb) <> 0 Then
 ActiveSheet.Shapes.Range(ObjTb).Select
 End If
 Set r1 = Nothing: Set r2 = Nothing
 Erase ObjTb
 Exit Sub
 errout:
 
 End Sub
 
 |  |