- ベストアンサー
エクセルVBAのウィンドウサイズ変更でエラー
- エクセル2000で、ファイルを二つのウィンドウに表示させて作業を行うのに、Auto_Openのマクロでサイズの調整を行っていましたが、ある日を境にエラーが出て動かなくなってしまいました。
- エラー内容は実行時エラー1004で、Window classのTOPプロパティを設定できないというものです。
- このエラーが発生するようになった原因と対処法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>WindowState = xlNormal の意味とか、必要性が分かりません。 >後学の為に教えていただけると幸いです。 Excelウィンドウの状態は、XlWindowState クラスの xlMaximized:最大化されている xlMinimized:最小化されている xlNormal :最大化も最小化もされていない の3つの状態があります。 Helpには、オブジェクトがWindowの場合の Topプロパティは 『ウィンドウが最大化されている状態のときは、このプロパティに設定することができません』 Widthプロパティは 『ウィンドウが最大化または最小化されている状態のときは、このプロパティに設定することができません。』 とあります。 従って、エラーが発生したのは、途中で最大化されたwindowに変わったためではないでしょうか。 ウィンドウの状態を調べて、それにあったプログラムを書くのではなく、無条件にxlNormalの設定をして Top、Left、Width、Heightプロパティを操作しているのが『.WindowState = xlNormal』の意味でしょう。 Help(Excel97)の使用例には、下の様に書かれています。 ※このHelpは、表示→オブジェクトブラウザ でTopを検索し、 検索結果の、クラス=Window、メンバ=Top のHelpを見ています。 With ActiveWindow .WindowState = xlNormal .Top = 1 .Left = 1 .Height = Application.UsableHeight .Width = Application.UsableWidth End With
その他の回答 (1)
- nishi6
- ベストアンサー率67% (869/1280)
WindowStateプロパティにxlNomalをセットする必要がある? .Top = 4 の前に、 .WindowState = xlNormal を追記します。
お礼
動くようになりました。ありがとうございました。 キーボードマクロをいじって作成したマクロで、作成後しばらくは動いていたのに妙なものですね。 教えていただいて、VBAのヘルプファイルを見てみましたが、 .WindowState = xlNormal の意味とか、必要性が分かりません。 後学の為に教えていただけると幸いです。
お礼
分かりました。 ありがとうございました。