2011-09-15 17 views
0

フォームをポップアップ表示するExcelアドインがあります。ユーザーがいくつかの値を入力して「適用」ボタンをクリックすると、値が基になるワークシートに正しく送信され、ポップアップ・フォームが閉じます。ただし、ユーザーが「キャンセル」をクリックすると、ユーザーが取り消したいことを確認するメッセージボックスがポップアップ表示されます。 "はい"をクリックすると、ポップアップフォームが閉じますが、Alt-Tabを押すのと同じように、以前アクティブなウィンドウの後ろにExcelが送信されます。これは良くない!Excelアドインフォームがフォームを閉じるときにExcelをバックグラウンドで送信します

誰でもExcelを上に維持する方法について考えていますか?

ありがとうございます!

ランディ

答えて

0

とメッセージボックスActiveWindow.ActivatePrevious と試験直後にこれを置くことができ、私はのActiveWindow /アクティブビュー上のバリエーションのすべての種類を探しましたが、該当するものを見つけることができませんでした。最後に、私は桑の茂みを回ってこれを考え出しました:

 IntPtr excelWindow = excelWindow = SpreadsheetApplicationFactoryBase.TheExcelApp.ExcelWin32Window.Handle; 
     Win32.SetActiveWindow(excelWindow); 

醜いですが、それはうまくいきます。このファクトリは、Excelインスタンスを作成または返す小さなクラスです。

私は非常に入力を感謝します。

ランディ

+0

私はまだYes/No確認ボックスがアプリケーション全体をバックグラウンドに送信する理由を知りたいと思います。それだけで私には分かりません。 – EoRaptor013

0

あなたは

Debug.Print ActiveWindow.Caption 
ActiveWindow.ActivatePrevious 
Debug.Print ActiveWindow.Caption 
+0

私は本当に愚かですか?私はActiveWindowを持っていません。少なくとも、IntelliSenseは認識していません。または、これはインスタンス化された何かのためのちょうどあなたの省略形ですか? – EoRaptor013

+0

Intellisenseが私のためにポップアップしました。たぶんあなたは 'Application.ActiveWindow'を試してみることができます。それは変だけど。私が再びWindowsマシンに戻ったら、もう一度やり直します。 – Brad

+0

ええ、ただ確認しました。 "activew"と打ち始めると、Ctrl +スペースで完了します。明示的にオブジェクトにアタッチされません。 – Brad

関連する問題