3

C# を使用して Excel アドインを作成しています。ユーザーに範囲を選択してもらいたいです。入力ボックスを設定しましたが、テキストとして入力すると範囲がうまくいきます。問題は、入力ボックスが開いているときに Excel が応答しないことです。ユーザーは Excel に移動して、マウスで範囲を選択することはできません。デバッグを停止した後、「ファイルが利用可能になりました」というメッセージが表示されます。

これはコードの一部です

Excel.Range str = excelApp.InputBox("Select table range", "", _ 
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 8);
MessageBox.Show("range = " + this.range.get_Address());
4

2 に答える 2

2

これは、すべての Windows ユーザー インターフェイスの設計および標準によるものです。InputBox 関数は、モーダル ダイアログを表示します。ダイアログは常に、アプリケーション内の他のウィンドウを無効にします。非常に面倒ですが、再入による問題を防ぐための重要な安全対策です。 この回答は、モーダル ダイアログがそのように動作する理由を説明しています。

この制限を回避するには、独自の非モーダル入力フォームを作成する必要があります。リンクされた回答に示されているように、そうするときに発生する可能性のある問題に注意してください。user-closes-ui の問題を恐れる必要はあまりありません。これにより、フォームも強制終了されます。しかし、間違いなくユーザー再発行コマンドの問題です。

于 2012-11-27T12:54:59.147 に答える
0

これをチェックしてください: RefEdit コントロールを使用して Excel 範囲を選択する方法

必要に応じてコードを更新できます。まずはお試しください。

于 2012-11-27T12:54:42.330 に答える