|
線や四角などのオブジェクトが含まれる範囲を削除すると、オブジェクトも消えますが、実際には、幅や高さが0になって見えなくなっている(罫線と重なっている)だけで、オブジェクト自体は消えていません。
いろんな人の手を渡ると、どこに見えないオブジェクトがあるのか判らなくなります。
オブジェクトはそれなりに容量を食うので、できればそのようなオブジェクトは無いほうが良いです。
そこで、そのようなオブジェクトを見つけて、選択状態(オブジェクトを触ったときの状態)にして、それを消すかどうかの確認メッセージを出して、Yesの場合に削除する、というマクロが欲しくて、以下のように作ってみました。
Sub Macro1()
Dim ooo As Object
For Each ooo In ActiveSheet.Shapes
ooo.TopLeftCell.Select 'オブジェクトを画面内に表示するため
ooo.Select 'どのオブジェクトなのかが判るように
If MsgBox("このオブジェクトを削除しますか?", _
vbYesNo + vbDefaultButton2 + vbQuestion) = vbYes Then
ooo.Delete
End If
Next ooo
MsgBox "end"
Set ooo = Nothing
End Sub
ステップ実行[F8]では、狙い通りになるのですが、通常実行[F5]では、選択状態にならないまま確認メッセージが出てしまいます。
なので、「このオブジェクト」がどのオブジェクトなのか判りません。
同じセルに、必要なオブジェクトと不要なオブジェクトがある場合もあります。
通常実行でも、オブジェクトが選択状態で確認メッセージが出るような方法(工夫)は無いものでしょうか?
よろしくお願いします。
|
|