07 ドッカブれません(T-T)
さてExcelにおいて、UserFormの代わりにCommandBarを何とか使うことはできないかと先日来じったばたこいておったわけですが。
まずは、作業ウィンドウツールバーで何とかできないかとの試み。
よーくヘルプをひっくり返して読んでみると、
Application.CommandBars("作業ウィンドウ")をCommandBar型変数にSetすれば作業ウィンドウツールバーはVBAのコントロール配下に置けることまではわかりました。
…でもね。そんだけなの。
別にAddできるわけではなく、今ある作業ウィンドウツールバーをSetするだけなの。
でもって、作業ウィンドウツールバーってがっちがちの参照専用に抑え込まれちゃっているので、Setしたからって、そのCommandBarオブジェクトにControlをAddできるわけでもないし、ましてや中にはめ込まらさっているbosa_sdm_XL9ウィンドウをいじくれるわけではないの。
じゃぁ別の方法はないもんか、ってんでしつこくあちこち探してみたんですが。
こんなんありました。
簡単に言うとこれ、ツールバーで電卓を作る方法なんですが。
Windowsのアクセサリにあるのになぜわざわざ電卓なのか、とか
UserFormでも作れるのになぜわざわざツールバーで作るのか、とか
ツールバーで作ってるもんだから、次回起動しても前回の計算結果が残ってるぞ、とか
動作がむちゃくちゃ遅いぞ、とか
Excel97では表示はできるがまともに動作しないぞ、とか
各種つっこみ禁止。
でもツールバーにコントロールをばりばり突っ込んでUserFormのように使っちゃおぅって発想はちょっと目からうろこでしたよ。
さっそくこれを本歌取りに、ComboBoxとListBoxをひとつずつ並べたツールバーを自作してみたんですが。
…だめですこれ。
フロートしている時や上下にドッキングしている時には希望通りに表示されるんですけど、
ツールバーの幅を変えてみたりもしてみましたが全然反映されません。
もしや、と思って標準で持っている書式設定ツールバーを右にドッキングさせてみたら、やっぱりComboBoxが非表示になってしまいました。(文字表示のCommandButtonは90°回転して表示されるんですけどね。)
フロート状態でなら何とかなるんですけど、シートの上に乗っかっちゃうんならUserFormで作ったって大差ないしなぁ…元々がシートの作業領域の邪魔をしないようにドッカブルにしたかったわけですから。
開き直ってUserFormで作っといて、UserFormの幅分のダミーツールバーを右にドッキングさせてその上にカブす、って手も考えてみたんですけど、実際によく使うツールバーを右にドッキングさせて使用している方にとっては明らかに邪魔邪魔な状態になってしまうだけですし。
てことで、現時点ではドッカブルな機能提供はさわやかにあきらめることにしたですよ。
ツールバー上に表示/非表示を切り替えるトグルボタンでも用意して、簡単にOn/Offできるようにすることでなるべくお邪魔にならない実装を考えるしかないっぽいです、今の私のスキルでは。