- ベストアンサー
VBA フォーム ボタンのマクロ登録
VBAのフォームボタンのマクロ登録をしています。 ボタンが1000個有り、 1個1個登録すると数時間かかってしまいます。 ボタンがあるセル番地を取得できる関数を探しています。 ご存知の方がおられましたら教えてください。 よろしくお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
まず筋違いな回答になる事をお詫びします。 コマンドボタンが1000個という場合、わたしだったらボタンを減らすための方法を検討します。 どのようなことがしたいのかを具体的に記入しては如何でしょうか? もっと良いアイデアが出せるかもしれないと思いました。
その他の回答 (2)
- MARU4812
- ベストアンサー率43% (196/452)
Shape として扱い、TopLeftCell プロパティや、BottomRightCell プロパティ から取得します。
- imogasi
- ベストアンサー率27% (4737/17069)
>ボタンが1000個有り、 設計思想に、問題があると思う。あまりエクセルとか、VBAも勉強してない段階で、複雑な方法で対処しているように思う。 そもそも1000個のコマンドボタンを使うという発想が普通はしないと思う。 基本的にコマンドボタンなどのオブジェクトとエクセルのシートのアドレスは何の関連もありません。ワークシートに貼り付けたオプションボタンなどでLinkedCellでオブジェクトの結果をセットする仕組みはチェックボタンなどにありますが、コマンドボタンには無いでしょう。 またユーザーフォーム上のそれにはないでしょう。 ーー 質問異ついて、下記からレベルが判ります。 エクセルさえも明言してない(セル番地から推測)。バージョンも書いてない。 ボタンもコマンドボタンかその他か書いてない 「関数」というのはエクセルのワークシート関数のことを言っているなら、見当違いもはなはだしい。関数はセルの値を設定・取得できるだけで、セルの値以外の属性やデータは取れません。 セルとオブジェクトが簡単に結び付けられると考えているらしいこと ーー もっと全体的にどういう場面でどうしたいのか、書いて質問すべきでしょう。中途半端に自分の思いついた仕組みを使おうとしているのではないかな。 一応、経験者なら、こうするだろうという「定石」的仕方があると思うので、それを勉強することが必要。 その場合に質問のようなこと(仕組みを使う)をするか、が問題。 ーー エクセルのセルには曲りなりにChangeイベントなどあるがご存知の上での質問か。 ーー コントロール配列(VBAでは出来ないが) やVB.NETの多数コントロールのイベントを捕まえる問題 を勉強するのも、広く言えば関連するかもしれない。
補足
お返事遅れすみません。 年賀状の表があり、それぞれの行の端にボタンをつけ、 それを押すと、年賀状形式で書き込まれたシートを出すものです。 初め、チェックを入れたものだけ出力することを考えました。 ループの中で、チェックボックスがtrueの行はシート出力すればいいと思いましたが、 できなく、ボタンにしました。 出来ればチェックボックスでシート出力したいのです。 ボタンで出力するのは、NO1.2のご回答で出来ました。 しかし、ボタン毎に、呼び出しを1000個作るというものです。 ボタンフォームを作り、1000個コピーしても、ボタンが取得するセル位置は、 コピー元のボタンのセル位置しか取得できなかったからです。 どうかアドバイスお願い致します。