- ベストアンサー
Excelマクロで使用済みのボタンを消す方法
- Excelマクロを使用して、使用済みのボタンを削除する方法について教えてください。
- ボタンの数が異なる場合でも、特定のセル以降にあるボタンを削除する方法を教えてください。
- ボタンを削除する際に、ボタン裏のセルを削除することができたが、本体のボタンを削除できない問題が発生しました。解決方法をお教えください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
いのXX番を総じて削り落としてしまって良いなら dim s as shape for each s in activesheet.shapes if s.name like "いの*" then s.delete end if next と言った具合です。 #そのためにわざわざボタン追加時に名前を付けるようにしておいたのですから。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
セルの数にあわせてボタンを動的に作成する数を決めたいのか。 であればフォームのInicializeイベント(この場合はブックのオープンイベント?)にボタンをADDする回数を d=sh1.Range("A64436").End(xlUp).Rowのようにとって必要ボタンの数を計算する。使うセルが1行おきなら、それなりに数の計算をする。 その数だけFor NextでAddを繰り返せば良いのでは? 質問の表現がくどくて、誤って解しているかもしれない。 質問者は、文章ですっきり内容を表現する訓練、セルとコントロールの状態を図示する勉強もしてください。 ==== 話は関連して ワークシートにコマンドボタンを複数貼り付けてあるとして、貼り付けたCommndButton1(最初に貼り付けた場合)だけを 削除するのは Sub test01() 'Worksheets("Sheet1").CommandButton1.Visible = True Worksheets("Sheet1").Shapes.Item(1).Delete End Sub で削除できるようだ。 別に、削除せず、Visible=Falseにしておく手もあろうかと思う。
お礼
回答とご指摘ありがとうございます。 すっきりさせ過ぎると情報が足りないし。。。と思いくどくなってしまったようです。 表示/非表示に関しましてはNo2さんのお礼に書いたとおりで、 ボタンがいくつ必要になるか分かりません。 後に下に関連情報をコピーする工程になりますので 邪魔になってしまいます。 ありがとうございました。
- nahotiti
- ベストアンサー率50% (1/2)
「コマンドボタン 削除」で検索したら、出てきました。 アクティブ・シートにある複数のコマンドボタンを見付けて、削除してくます。 Dim obj As OLEObject For Each obj In ActiveSheet.OLEObjects If TypeOf obj.Object Is MSForms.CommandButton Then obj.Delete End If Next
お礼
回答ありがとうございます。 そのページは以前見ましたが、 アクティブシート上にあるコマンドボタンを全て一気に削除するようです。 同じシートには削除したくないボタンもありますので今回は使えませんでした。 ですが、編集中は今も使っています。 ありがとうございました。
- keithin
- ベストアンサー率66% (5278/7941)
>次にボタンをクリックしたときに、 >上の工程で作られたボタンを削除したい ここで言ってる「ボタンをクリックしたときに」とは, 1)「ボタン全部削除ボタン」が別にあるのをクリックすると,ボタンを一斉に削除したい,なのか 2)最初のマクロでずらり並べたボタンからどれか1個クリックすると,そのクリックしたボタンを消していく,なのか どういう状況ですか。 ご相談分後半で掲示されたマクロの動作を追ってみると,どうやら1)のようにも思えますが,それならばactivesheet.shapes("いの"xx番)を順番にdeleteしていけばOKです。
お礼
回答ありがとうございます。 イメージ的には1)と2)を合せたものです。 クリックするとマクロでD列の5行目から下に並んだボタンを一斉に削除する感じです。 ですが、何かヒントをもらった気がします。 ありがとうございました。
補足
お蔭様で無事に解決しました! ポカミスばかりでてこずりましたが、 以下のコードがで問題なさそうです。 Dim a As Long For a = 1 To Range("D" & Rows.Count).End(xlUp).row - 4 ActiveSheet.Shapes("Order" & a).Cut Next 回答いただいた皆様ありがとうございました!
- FEX2053
- ベストアンサー率37% (7991/21373)
通常ボタンは、「削除するのではなく、表示しないようにする」「作るのではなく、非表示のものを表示させるようにする」というやり方で動作させる・・・と思うんですが。ちなみに非表示のボタンは押せなかった筈です。 で、表示/非表示ですが、.Visible = True / False というだけの話だった筈です。 動作チェックして無いので、その辺はお許しを。
お礼
回答ありがとうございます。 今回の場合は、ボタンが何個必要になるか解らないため、 作るようにしています。 2個の場合もあれば、10個、20個必要な場合も考えられます。 今試しているものは12個必要です。 しかし、他の場所では使えるかもしれません。 ありがとうございました。
補足
質問欄に間違いがありました。 この場をお借りして訂正いたします。 質問欄の上のコードでは、 「.OnAction = "Select"」 と、書いていますが、中盤に 「ボタンにマクロ「あいうえお」を登録します。」 とあります。 正確には 「ボタンにマクロ「Select」を登録します。」 です。 宜しくお願いいたします。
お礼
回答ありがとうございます。 仰るとおり削除するために連番で名前を付けました。 タッチの差で完成してしまいましたが、 そちらの方が汎用性があってよさそうです。 Eachは使った事も無く発想出来ませんでした。 ありがとうございました!