|
こんにちは。かみちゃん です。
>この場合、他に「楕円」を使っていればそれも消えますよね?
>それを避けるためにRangeオブジェクトなどを使って「楕円」を消す範囲を
>指定することは可能でしょうか?
相変わらず時間がないのですが、他の掲示板で書いた内容を一部編集して、紹介します。
なお、指定したセル範囲の「楕円」のみを対象にするならば、kanabunさんのコードも加味されるといいと思います。
以下のコードは、指定された範囲のオブジェクトをすべて削除します。
Sub Sample3()
Dim m As Long
Dim i As Long
Dim myShp As Shape
Dim myR As Range, SR As Range
On Error Resume Next
Set myR = Application.InputBox("削除する範囲のセルをドラッグしてください", Type:=8)
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
' Set myR = ActiveSheet.Range("A1:A10")
With ActiveSheet
m = .DrawingObjects.Count
For i = m To 1 Step -1
With .DrawingObjects(i)
Set SR = Range(.TopLeftCell, .BottomRightCell)
If Not Intersect(SR, myR) Is Nothing Then
If Intersect(SR, myR).Cells.Count = SR.Cells.Count Then
' MsgBox .ShapeRange.Name & " を削除します"
.Delete
End If
End If
Set SR = Nothing
End With
Next i
End With
MsgBox "フォーム・コントーロルオブジェクトを削除しました"
End Sub
なお、以下のURLを参考にしています。
http://park11.wakwak.com/~miko/Excel_Note/17-03_zukei.htm#17-03-43
また、
On Error Resume Next
Set myR = Application.InputBox("削除する範囲のセルをドラッグしてください", Type:=8)
If Err.Number <> 0 Then Exit Sub
On Error GoTo 0
で任意のセル範囲を選択してから、処理するようにしていますが、
あらかじめ範囲を固定しておくということでいいのであれば、
Set myR = ActiveSheet.Range("A1:A10")
だけでもいいと思います。
|
|