|
Tさん、Jakaさん、主宰者の谷です。
問題が解決してから登場するのはナニですが、念のために補足しておきます。
>なんでMicrosoftは95で使っていたメニューエディタを2000に
>引き継がなかったのでしょうか?
Excel 5.0、Excel 95 に存在していた「メニューエディタ」がなくなったのは、Excel 97 からです。理由は、
メニューがメニューじゃなくなったから
です。???
Excel 95 までは、「メニュー」と「ツールバー」は全く異なるオブジェクト(部品)でした。メニューを操作するには Menus コレクション、ツールバーを操作するには ToolBars コレクションを使います。
また、オリジナルのメニューを作成するための「メニューエディタ」が存在しました。メニューエディタで記述したメニューは、現在作業中のブックに保存されます。ブックと、そのブックに含まれるマクロと、そのマクロを実行するためのメニューはまさに「ワンセット」だったんです。メニューを含むブックを開くと、そのメニューが自動的に使用可能になり、そのブックを閉じるとメニューも一緒に消えます。
しかし、Excel 97 から完全に仕様が変わりました。「メニュー」と「ツールバー」はまったく同じもの、になったのです。極端な話をすれば、メニューバーにコマンドボタンを貼り付けることもできますし、ツールバーにメニュー項目を貼り付けることもできるようになったのです。操作も CommandBars コレクションを用いて行います。メニューのカスタマイズはExcelそのものに保存されるようになりました。
このように仕様がまるっきり変わったので、メニューエディタではメニューを操作できなくなり、消え去ってしまったのです。
>上位バージョンって下位バージョンを完全に包括するはずじゃ
>ありませんでしたっけ?(言ってもしかたないけど)
中途半端に包括しています。
カスタムメニューを含むブック(つまり、メニューエディタで作成したメニューを含むブック)を開いたら、そのメニューはちゃんとExcelに反映されます。もちろん、メニューを選択したらマクロも動作します。また、Menus コレクションも Toolbars コレクションも、下位互換のために利用可能になっています(推奨されていません。CommandBars コレクションで行える操作にお一部が行えないためです)。
目安箱に、私が作ったメニュー操作関数を紹介しておきました。
ご参考になれば幸いです。
http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=42;id=FAQ
|
|