Subject: 挿入した図を削除するには? ======================================== From: カンガル− Date: 2000/10/12(木) 18:20:29 こんばんは。Excel2000を使用しています。 VBAは自分で書いたことがないので、困っています。 マクロで挿入してきた図を削除する方法を教えてください。 マクロで図を挿入してきて、その図を削除する。 挿入してくる図は、常に違うので、その図を削除できても、 次に挿入してきた図を削除する事が出来ません。 宜しくお願いします。 早めの解答をお願いします。図々しくて申し訳ありません。 ======================================== From: ケイン Date: 2000/10/12(木) 19:45:47 こんばんは ご質問の内容だけ読むと、ちょとわかりづらいのですが、 >VBAは自分で書いたことがないので ということから推測して、楕円や四角を挿入するときは自動記録を使っているわけですね ? すると、いちばん簡単なコードでどれでも削除できるようにするには・・ Sub Test() Selection.Delete End Sub になります。マウスで選択状態にして、実行するだけです。でもこれだけだとわざわざマクロ にするだけの意味はありません。Deleteボタンを押すのと何ら変わりがないからです。 そこで、もう少しマクロらしくかつ自由に扱えるコードにすると・・ Sub Test2() ActiveSheet.DrawingObjects.Delete End Sub で、アクティブシート上の全ての図形が、いっぺんに消えます。これを少し変えて・・ Sub Test3() ActiveSheet.DrawingObjects(3).Delete End Sub とすると、3番目に挿入した図形だけが消えます。もっと便利にしたいなら・・ Sub Test4() " A% = Application.InputBox(""消したい図形の番号を入れて下さい"", Type:=1)" Select Case A% Case False Exit Sub Case Else ActiveSheet.DrawingObjects(A%).Delete End Select End Sub としておけば、ダイアログに入力した番号の図形だけが消えます。もういっちょ、ブック内の 全シートの図形を消す場合は・・ Sub Test5() Dim WS As Worksheet For Each WS In WorkSheets WS.DrawingObjects.Delete Next WS End Sub に、なります。こんなとこでよろしいですか ? では。 ======================================== From: カンガルー Date: 2000/10/13(金) 09:33:57 ケインさんありがとうございました。 解りずらい質問、説明不足ですみません。 4つの写真を挿入してきて、印刷してその写真を削除して、また違う写真を挿入 って事の繰り返しをしたかったのです。 いくつも例を挙げていただいてありがとうございます。 『TEST2』の「アクティブシート上の全ての図形が、いっぺんに消えます」 をセルの指定って出来ますか?A1〜S50までというのは・・・ボタンまで消えてしまうので。 『TEST4』でダイヤログに入力する数字は、一つだけですか? 続けて1〜4枚指定は出来ないのですか? 度々図々しいお願いをすみません。宜しくお願い致します。 ======================================== From: カンガルー Date: 2000/10/13(金) 09:44:26 度々すみません。 シート上にボタンを残しておきたいので、 挿入してきた図だけを削除する方法もありますか? ======================================== From: ケイン Date: 2000/10/13(金) 13:42:17 こんにちは ふむふむ、図形というのは写真のことだったんですね。すると写真を表す Picture を DrawingObject の 代わりにしてやれば良いですね。4枚いっぺんに消すってことと、追加してきた分もいずれ 消すわけですから、Picture のコレクションである Pictures にすればうまくいきそうですね。 んで、こんなぐあいになります↓ Sub Test6() ActiveSheet.Pictures.Delete End Sub べつに独立したプロシージャにしなくてもいいです。印刷マクロの最後にこのコードを追加 しておく、ってのも便利でしょう。 >セルの指定って出来ますか そんなことしなくても良い、ということはお分かりいただけたと思いますが、いちおう・・ TopLeftCell と、BottomRightCellプロパティを使えば、位置を取得できます。こんな感じ↓ X$ = ActiveSheet.Pictures(2).TopLeftCell.Address 図形の、右上端セルと左下端セル位置の取得だけで、設定はできません。 >『TEST4』でダイヤログに入力する数字は、一つだけですか? >続けて1〜4枚指定は出来ないのですか? "も、必要ないことがお分かりいただけたと思いますが、もし""続けて指定した2〜3個の写真""を" 消したいなら・・ Sub Test7() Line1: " A% = Application.InputBox(""消したい写真の番号を入れて下さい"", Type:=1)" Select Case A% Case False Exit Sub Case 1 To 4 ActiveSheet.Pictures(A%).Delete " X = MsgBox(""別の写真を削除しますか ?"", vbYesNo)" Select Case X Case vbYes GoTo Line1 Case vbNo Exit Sub End Select Case Else Exit Sub End Select End Sub とすれば良いでしょう。(1から4までの数以外を入れると、終了するようにしました。) では。 ======================================== From: カンガルー Date: 2000/10/13(金) 18:15:46 Solved: on ケインさん、本当にどうもありがとうございました。 わがままいっぱいの質問に答えていただきまして・・・ すべて、解決しました。 VBAは、初めから難しいという頭でいるので、考えられなかったけど、 ケインさんの解答を見て、私も勉強をしてみようかと思いました。 頑張ってみます。また、質問するので、ご指導宜しくお願いします。 PS 早めの解答を・・・と言ってながら、返事が遅くてすみません。