|
▼じょにー さん:
思いつき部分が多いので実際の運用面でどうか・・・とは思いますが。
標準モジュールのAddShapeの最後、End Sub の直前に
ActiveSheet.Shapes(ActiveSheet.Shapes.Count).OnAction = "DelShapeX"
これをいれておきます。
で、以下のプロシジャを追加します。
Sub DelShapeX()
ActiveSheet.Shapes(Application.Caller).Delete
End Sub
図のあるセルをダブルクリックした際に、「運良く」セル領域にマウスポインターがあれば
現行のロジックが動いて図は削除されますし、図そのものにポインターがあれば
図に登録されたマクロとしてのDelShapeXで削除されます。
ただ・・・実際には図のダブルクリックではなく図のクリックで削除されます。
セルがそんなにおおきくない場合は、最初のクリックで消え、カーソルが下のセルに移り
2度目のクリックで、下のセルでダブルクリックイベントが発生し、そこにドーナッツが
作られるケースが多くなります。
ですから、この案でいくなら、運用ルールとしては
・図のないセルではダブルクリックで図を作成。
・図に対しては「クリック」で削除。
このようにされたほうがいいのかも。
(つまり、シートモジュールには是の作成コードのみを書き、削除部分は「削除」)
あぁ、本線テーマではないのですが、標準モジュールのプロシジャは
Public 記述がなくてもPublic扱いになっています。
また他のモジュールからPublicプロシジャにとぶ場合、Module1.プロシジャ名 といった
モジュール修飾は不要です。
|
|