プロが教えるわが家の防犯対策術!

エクセル2000と2007でボタン(フォーム)の認識が違って困っています。
エクセル2007でシート内に設置したボタン(押したらマクロが実行されるように)をマクロで消したいと思い、「マクロの記録」にて以下のような記述で消すことができたのですが、これをエクセル2000(互換性にて)同じ事を行うとるすと、消そうするボタンが特定できず、、"Button 1"→"Button 10"と
変更すると消す事ができました。

ActiveSheet.Shapes("Button 1").Select
Application.CutCopyMode = False
Selection.Delete

マクロでボタンやフォームを消す場合、はやり2000と2007とでは記述の仕方に違いがあるのでしょうか?できれば、どちらでも消せるようにしたいと思っております。
現状は2007用と2000用を別々にファイル作成しています。よろしくお願い致します。

A 回答 (3件)

"Button 1"と"Button 10"との違いなら、2000と2007との違いではなくすでにButton 9まで作っているために番号が10になっただけではないでしょうか。


つくったボタンを削除しても、ボタン名の番号につかう数値は増えていきます。

なので、.Shapes("Button 1") のように名前で指定せずにインデックスの番号で指定してはいかがでしょう。
そのシートにシェープが1しかないのなら
ActiveSheet.Shapes(1)
1つだけでも複数あっても、必ず最後に追加操作をしたものなら
ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
のように指定すれば取得できると思います。
    • good
    • 0

質問を誤解しているかもしれませんが、マクロボタンを押したらあるマクロを実行し、そのボタン自体を削除するのでしょうか?


ならば、そのフォームのボタンにSub TEST01()をセットしてみてください。
Sub TEST02()を実行した後、自分自身を削除します。
Application.Callerを使いますので、ボタン自体の名前に影響を受けません。

Sub TEST01()
  Call TEST02
  ActiveSheet.Shapes(Application.Caller).Delete
End Sub

Sub TEST02()
  MsgBox "ボタンを削除します。"
End Sub
    • good
    • 0

2000と2007とでは記述の仕方に違いがあります。

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!