意の中のカワズ(35歳の壁 別館)

35歳の壁の別館ブログです。コード中心になるようにしたいので、技術雑記はできるだけ本館に書きます。

VBA:「すべての図形を検索」

まぁ、当然開発中に必要になるのがこういうヤツですね。
以下3つの投稿を組み合わせているのでおまけで載せときます。

追記:@2011.09.30 16:30
 Doevent を挟んでもシェイプの選択描画がうまくいかなかったので、
 該当セルを着色してどのセルの確認かを見やすくしました。
 他、ちょっとSelectionアイテムに対して処理することでサンプルを
 読みやすくしました。



' シェイプを全て探します表示します。
' ただしこれは全検索タイプなので遅い
Public Function srchShapeAllWithDelete() As Boolean

Dim objShp As Shape
Dim valRGBIndex as Variant

For Each objShp In ActiveSheet.Shapes
Range(objShp.TopLeftCell.Address(False, False)).Activate
Range(objShp.TopLeftCell.Address(False, False)).Select
valRGBIndex = Selection.Interior.ColorIndex
Selection.Interior.ColorIndex = 3 ' 赤で着色
If msgBox(objShp.TopLeftCell.Address(False, False) & _
" にある " & objShp.Name & vbCr & _
"このシェイプを消しますか?", vbYesNo) = vbYes Then

objShp.Delete
End If
Selection.Interior.ColorIndex = valRGBIndex
Next

End Function