| すぐマク YNxv9g0940 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
| ワークシートに沢山配置したコマンドボタンを見分ける方法は? |
|
|
|||
|
良いアイデアと思いますが、結論から申し上げると困難ではないかと思います。 「現在はコマンドボタンごとにマクロを登録」ということですが、コントロールツールボックスの「コマンドボタン」か、フォームツールバーの「ボタン」のことかがはっきり分かりません。
もしも、コントロールツールボックスの方ならばワークシートのコード画面に、右図のようなイベントマクロが 10個あるかと思います。
また、フォームツールバーの方ならば、標準モジュールに右図のようなマクロが 10個あるでしょう。いずれの場合も、コードの2行目の n = 1 の右辺が異なるるだけのマクロが10個並ぶので、 「コマンドボタンごとにマクロを登録」しないで 「押されたコマンドボタンで変数を取得してマクロを実行する方法」、つまり、1つのマクロに集約できないかと思われるのは当然と言えましょう。 ですが、コントロールツールボックスの方であるならば、恐らく不可能かと思います。その理由は、個々のコマンドボタンとワークシートのコード画面のイベントマクロ(上図の上)が 1対1 で結びついているからです。 一方、フォームツールバーの方なら、どのボタンにも同じマクロを登録できますから、ひょっとするとできるのかも知れませんが、むつかしいようです。 ![]() 1. 「コマンドボタンのネームを 1から10という名前にしてその名前を取得」する方法 右図のようなものだと想定すると、Captionプロパティで値を取得することになりますが、それは無理かと思います。 2. ボタンの名前を取得して末尾の数字を利用する方法 ワークシート上のボタンは図形としての名前を持っていますから、それを取得して末尾の数字を利用できないかという案です。 ボタンの名前は次のコードで取得できます。 MsgBox ActiveSheet.Shapes(インデックス番号).Name( )の中のインデックス番号はワークシートにボタンを描いたときの順に付番されますから、例えば 4 としてからこのマクロを実行すると、Button 4 と表示されます。何となくできそうな感じですが、クリックされたボタンが何番が分からないことには、このコードは利用できません。 そうなると、クリックされたボタンの番号を調べる方法ということになります。ところが、オプションボタンの場合は Valueプロパティの値を調べれば、オプションボタンの番号も分かりますが、(コマンド)ボタンではできないと思います。 以上により解決策としては次のようになるかと思います。(そもそもの主旨が分からないので外れていたら御免なさい) 1. 10個のマクロの内容が上図のように簡単で、よく似たものが並ぶことが鬱陶しいだけならば、そのまま我慢する (そのままの方が実行時間は速い) 2. オプションボタンに変更することが可能ならば、さらに研究する 3. ユーザーフォームのコマンドボタンに変更することが可能ならば、さらに研究する |
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |