2017-09-11 3 views
0

ExcelブックのGUIのようなインターフェイスを作成したいが、ブックが閉じられるまでブックを表示したくない。しかし、ワークブックを私のコードの参照で目立たないようにすると、範囲を大きく変更することなく範囲を読み取ることができません。私はウィンドウを最小化しようとしましたが、フォームも最小限に抑えられました。VBAからExcelワークブックを非表示にするが、ユーザーフォームではありません。

アクティブブックをアクティブにしておくと表示されないようにする方法はありますか?

+0

この場合、「*ただし、私のコードの参照で目に見えない厄介なものがあり、範囲を大きく変更することなく範囲を読み取ることはできません。* "おそらくあなたのコードで' .Select'または '.Activate'を使用しています。これは悪い習慣であり、回避されることが強く推奨されています(多くの未定義の問題や遅いコード)。これが両方を使用しないようにするにはGoogleの場合は、多くのチュートリアルがあります。はい、それらを削除することは多大な労力を要しますが、将来のデバッグに多くの時間を節約し、コードをもっと良くします。 –

+0

私は、ワークブックをアクティブに保つ必要はないと思っていたでしょう - 変数を使ってワークブック/シートを参照するだけでいいのですか?これは私のためにうまく動作し、私はまだ私が好きなブックのいずれかのシートを参照することができます: 'Private Sub Workbook_Open():Application.Visible = False:UserForm1.Show:End Sub' –

+0

@ DarrenBartrup-Cook 'Worksheets(" MySheetName ")。Range(" A1 ")'のようにワークシートを直接参照する代わりに '.Select'と' .Activate'を使用しないでください。しかし、私は、シートが隠れていると言って彼が '.Select'を使っている彼の参照を混乱させ、' .Select'を使わず直接参照するように変更しなければならないと思っています。その後、参照は、ブックを隠した後でも動作します。 –

答えて

2

は、フォームのUserForm_Initialize方法でこのコードを入れ

Private Sub UserForm_Terminate() 
    ThisWorkbook.Application.Visible = True 
End Sub 
+1

ありがとう!これは私のために働いた。しかし、 "ThisWorkbook"を残しておくと、Application.Visible = Trueに変更しなければなりませんでした。それは再現されません。 – Variax

-1

(通常の状態に戻す)あなたはユーザーフォームを終了するときのためにユーザーフォーム

Private Sub UserForm_Initialize() 
    ThisWorkbook.Application.Visible = False 
End Sub 

、これをロードする場合は、次を含める

ActiveWindow.Visible = False 
関連する問題