dポイントプレゼントキャンペーン実施中!

BookがそれぞれAとBとあります。Book BにBook AとBのデータを絞り込むデータ入力フォームを開くようにしています。
Bを起動するとAのsheetを開き、絞り込みフォームが開きます。

画面上は最背面にB、次にA、最前面にフォームとなります。この状態でAを絞り込む場合には、このままでいいのですが、Bを絞り込んだり、結果を表示すると、「B-フォーム-A」の順序になり、また絞り込むとき、Book Aを選択しなくてはなりません。

フォームを最前面に常に表示するにはどうすれば良いでしょうか?
他の質問で、WindowsのAPIを屈指してでないとだめですか?
APIも試してみましたが、うまく行きません。

参考になる回答でもありましたら、お教えください。

A 回答 (2件)

>なにか良い方法はありませんか?



ふたつの手段があると思います。
あくまでも、Excel の32bit 版を、Wow64で使用する。
http://technet.microsoft.com/ja-jp/library/ee681 …
「ほとんどのユーザーには 32 ビット版 Office 2013 をお勧めしています。」

もうひとつは、古くからあるテクニックで、
小さなブックを作り、それをUserFormの代わりにする。そして、そこにボタンなどを置く。画面が切り替わっても、イベント・ドリブン型マクロで、Windows(1).Activateなどで、オーダーの先頭に置く。バージョンによって不可能なものもある中で、確か、Excel 2013では、そのようなことが可能だったと思います。

こういうことが考えられます。

この回答への補足

回答、有難うございます。

>画面が切り替わっても、イベント・ドリブン型マクロで、Windows(1).Activateなどで、オーダーの先頭に置く

やはりDataとVBAとは別Bookに分けないと駄目ですか?
入力用フォームは、データを逐次入力するので、完全に分けましたが。
また、開くBookが変わるとユーザーが混乱しそうです。
現状の切り分けラジオボタンで様子を見ます。

また、別のアイディアが浮かびましたらお願いします。
また、他の方のご意見もお待ちします。
有難うございます。

補足日時:2015/01/16 11:09
    • good
    • 0

こんにちは。



>絞り込んだり、結果を表示すると、「B-フォーム-A」の順序になり、また絞り込むとき、Book Aを選択しなくてはなりません。

最初に、再現性が取れませんでした。直接の回答ではありませんが、いろいろと試行錯誤してみました。

>APIも試してみましたが、うまく行きません。
googleで調べて、以下のような文面がありました。
http://dobon.net/vb/dotnet/process/appactivate.h …
「MSDNの「SetForegroundWindow」の説明にあります)。そうならないのにはそれなりの理由があり、本来ならばそのようなOSのルールを尊重し、従うべきです。」とあります。

それでも、変える場合とありました。VB.Netですが、Win32 APIに関しては、内容的に、VBAとはほとんど変わりません。

再現性がないのは、ExcelのバージョンとOSの関係かもしれません。
こちらは、Excel 2010, OS Windows7 32bit です。

[Windows7 64bit、Excel2010だとユーザーフォームが最前面に出ない]
とありますが、これでしょうか。
http://ninoha.com/?p=349

この回答への補足

早々の回答、有難うございます。
こちらのバージョンは、Excel 2013、OS Windows7 64bitです。

http://ninoha.com/?p=349 これもすでに試したのですが、
Book Aが表示されない。フォームが別窓扱いになります。タスクトレイのEXCELが
本来、Book AとBになるはずが、Book Aとフォームになってしまいます。

仕方がないので、今はフォームにBook AとBの切り替えラジオボタンを配置して
切り替えの度に切り替えたBookをアクティブにしてにフォームを開き直しています。
(これだとフィルターのデータをAとB用にメモってリロードしないといけない)

なにか良い方法はありませんか?

補足日時:2015/01/16 10:11
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!