Excel VBA質問箱 IV

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

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


7301 / 13645 ツリー ←次へ | 前へ→

【39696】いくつかの図形の描写、消去をしたい おか 06/6/29(木) 11:09 質問[未読]
【39698】Re:いくつかの図形の描写、消去をしたい ひげくま 06/6/29(木) 11:27 回答[未読]
【39705】Re:いくつかの図形の描写、消去をしたい おか 06/6/29(木) 12:53 お礼[未読]
【39718】Re:いくつかの図形の描写、消去をしたい ひげくま 06/6/29(木) 16:21 発言[未読]
【39835】Re:いくつかの図形の描写、消去をしたい おか 06/7/2(日) 15:58 お礼[未読]
【39854】Re:いくつかの図形の描写、消去をしたい ひげくま 06/7/3(月) 10:48 発言[未読]
【39975】Re:いくつかの図形の描写、消去をしたい おか 06/7/4(火) 20:03 お礼[未読]

【39696】いくつかの図形の描写、消去をしたい
質問  おか  - 06/6/29(木) 11:09 -

引用なし
パスワード
   自動マクロ作成で単純に横線を描くと
ActiveSheet.Shapes.AddLine(270.75, 67.5, 513.75, 67.5).Select
このようにマクロが作成され
次にこの横線をクリックしdeleteで削除すると
  ActiveSheet.Shapes("Line 166").Select
  Selection.Delete
このように作成されるのですが
Line 166が一回やるごとに167,168,169と変化するようなので
マクロで組んでもエラーになってしまいます
そのような図形がたくさんあり同じ図形を消去したり描いたりの
繰り返しをマクロでやりたいのですが全くわかりません
よろしくお願いします

【39698】Re:いくつかの図形の描写、消去をしたい
回答  ひげくま  - 06/6/29(木) 11:27 -

引用なし
パスワード
   ▼おか さん:
こんにちは。

線を書くときに、
ActiveSheet.Shapes.AddLine(270.75, 67.5, 513.75, 67.5).Name = "linexx"
というように名前を付ければ、

消すときは、
ActiveSheet.Shapes("linexx").Delete
で消せますよ。

【39705】Re:いくつかの図形の描写、消去をしたい
お礼  おか  - 06/6/29(木) 12:53 -

引用なし
パスワード
   ひげくまさん こんにちは
早々の回答びっくりしています
はい 完璧に動きました もううれしくて ハイ
自分で数時間も考えていたことがばかみたいでした
今 機械警備のセンサを切ったときに 切った場所を
表示させようと悩んでいました
こんな馬鹿な質問の回答書くだけでもめんどくさいと思わないで
回答ありがとうございました
とにかくひげくまさんには感謝いたします
また何かありましたらお手伝いお願いします
失礼致します

【39718】Re:いくつかの図形の描写、消去をしたい
発言  ひげくま  - 06/6/29(木) 16:21 -

引用なし
パスワード
   新たに質問があったので、回答を下書きして、書き込もうとしたら、その新たな質問が無くなっていますね。
自己解決できたのでしょうか?

【39835】Re:いくつかの図形の描写、消去をしたい
お礼  おか  - 06/7/2(日) 15:58 -

引用なし
パスワード
   ▼ひげくま さん:
>新たに質問があったので、回答を下書きして、書き込もうとしたら、その新たな質問が無くなっていますね。
>自己解決できたのでしょうか?
今日7/3 ひょっとして 拝見したらひげくまさんから はい
いや! ちゃんと見ているのですね 驚いています 
もっと早くご返事を差し上げなければいけませんでしたが
今日拝見し大変失礼しました
自分が恥ずかしくいろいろやってみました

ActiveSheet.Shapes.AddShape(msoShapeRectangle, 162#, 28.5, 322.5, 12#). _
    Select

  1. Selection.Name = "line3"

  Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13
  Selection.ShapeRange.Fill.Visible = msoTrue
  Selection.ShapeRange.Fill.Solid

1.のように適当に前回のひげくまさんの回答を参考にしましたが
一応エラーなしに消去できましたがそれでいいのでしょうか
局舎のまわりにこのような線図をいくつも書きセンサを切ったときにその図を
表示させたりリセットしたときに消去させることがひげくまさんのおかげで
できるようになりました
例えば線図をフリッカさせるにはループ等で組まなく関数なんかがありますか
これは次のステップですが はい

【39854】Re:いくつかの図形の描写、消去をしたい
発言  ひげくま  - 06/7/3(月) 10:48 -

引用なし
パスワード
   ▼おか さん:
こんにちは。

>ActiveSheet.Shapes.AddShape(msoShapeRectangle, 162#, 28.5, 322.5, 12#). _
>    Select
>
>  1. Selection.Name = "line3"
>
>  Selection.ShapeRange.Fill.ForeColor.SchemeColor = 13
>  Selection.ShapeRange.Fill.Visible = msoTrue
>  Selection.ShapeRange.Fill.Solid
>
>1.のように適当に前回のひげくまさんの回答を参考にしましたが
>一応エラーなしに消去できましたがそれでいいのでしょうか

大丈夫だと思います。

Withを使って、上記コードを、

With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 162#, 28.5, 322.5, 12#)
  .Name = "line3"
  .Fill.ForeColor.SchemeColor = 13
  .Fill.Visible = msoTrue
  .Fill.Solid
End With

というようにまとめることができます。
やりすぎかもしれませんが、さらにWithを使って、

With ActiveSheet.Shapes.AddShape(msoShapeRectangle, 162#, 28.5, 322.5, 12#)
  .Name = "line3"
  With .Fill
    .ForeColor.SchemeColor = 13
    .Visible = msoTrue
    .Solid
  End With
End With

とまとめることもできます。

With の使い方を覚えると、タイピングが少なくて済むし、見た目にもすっきりして解りやすくなります。
使いすぎると逆に解りにくくなる場合もありますが。

【39975】Re:いくつかの図形の描写、消去をしたい
お礼  おか  - 06/7/4(火) 20:03 -

引用なし
パスワード
   ひげくまさん こんばんは
いろいろな方法があるんですね
helpの中にもwithで書いたものもありましたが
使用方法がわからず これでOKとなりました
ありがとうございました
実際に組み込んでハードとソフトの検証したいと思います
またわからないことがありましたらよろしくお願いします
おかより

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