Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


23460 / 76738 ←次へ | 前へ→

【58644】Re:オートシェイプを消すマクロがわかりません
発言  kanabun  - 08/11/2(日) 14:55 -

引用なし
パスワード
   ▼りー さん:

こんにちは。ちょっとお邪魔します。

> 最後に実行した分のオートシェイプだけが表示されるように
> できればいいのですが

>あった場合、それぞれの選択に対してオートシェイプを表示し、
>前回実行分のオートシェイプは消去するというようなことはできるの
>でしょうか?

最初の質問と2回目の質問のちがいがよく分からないので、

まとめて、一般論ですが、、

描画して、最後に描画したオートシェイプ以外削除する のでなく、
現在のシート上のオートシェイプを消しておいてから、
目的のオートシェイプを描画すればいい、ような気がします。

あと、Shapesコレクションにはオートシェイプ以外にも、
グラフはもちろん、コメントや入力規則のドロップダウン▼や
オートフィルタをかけていれば、そのドロップダウン▼も含まれます。
ですから、
現在のシート上の「オートシェイプをすべて消してから」という
目的で、

 Dim shp As Shape
 Dim i As Integer
 
 For i = ActiveSheet.Shapes.Count To 1 Step -1
  ActiveSheet.Shapes(i).Delete
 Next

とやったりすると、コメントや入力規則リストまで削除されてしまい、
シートの構成によっては、以後使い物にならないシートに変わってし
まう恐れがあります。

Shapesコレクションではなく、
  ActiveSheet.DrawingObjects.Delete
というステートメントを使いましょう。

オプションボタンで描画しているのが、いつも「楕円」ならば

  '(1)シート上にあるすべての楕円を消す
  ActiveSheet.Ovals.Delete
  '(2)あたらしい楕円の描画
   ここにマクロで実行しているコードを書く

のように、図形を制限して実行すれば For〜Loopしなくて済みます。

以上、一般論でした。
4 hits

【58638】オートシェイプを消すマクロがわかりません りー 08/11/2(日) 1:27 質問
【58640】Re:オートシェイプを消すマクロがわかりま... かみちゃん 08/11/2(日) 7:44 発言
【58642】Re:オートシェイプを消すマクロがわかりま... りー 08/11/2(日) 11:56 お礼
【58643】Re:オートシェイプを消すマクロがわかりま... りー 08/11/2(日) 12:01 質問
【58644】Re:オートシェイプを消すマクロがわかりま... kanabun 08/11/2(日) 14:55 発言
【58645】Re:オートシェイプを消すマクロがわかりま... かみちゃん 08/11/2(日) 15:07 発言
【58647】Re:オートシェイプを消すマクロがわかりま... りー 08/11/2(日) 16:11 お礼
【58646】Re:オートシェイプを消すマクロがわかりま... りー 08/11/2(日) 16:03 お礼
【58648】Re:オートシェイプを消すマクロがわかりま... kanabun 08/11/2(日) 16:17 発言
【58649】Re:オートシェイプを消すマクロがわかりま... かみちゃん 08/11/2(日) 17:05 発言
【58650】Re:オートシェイプを消すマクロがわかりま... りー 08/11/2(日) 18:29 お礼

23460 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free