• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAのウィンドウサイズ変更でエラー)

エクセルVBAのウィンドウサイズ変更でエラー

このQ&Aのポイント
  • エクセル2000で、ファイルを二つのウィンドウに表示させて作業を行うのに、Auto_Openのマクロでサイズの調整を行っていましたが、ある日を境にエラーが出て動かなくなってしまいました。
  • エラー内容は実行時エラー1004で、Window classのTOPプロパティを設定できないというものです。
  • このエラーが発生するようになった原因と対処法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.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

mitarashi
質問者

お礼

分かりました。 ありがとうございました。

その他の回答 (1)

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

WindowStateプロパティにxlNomalをセットする必要がある? .Top = 4 の前に、 .WindowState = xlNormal を追記します。

mitarashi
質問者

お礼

動くようになりました。ありがとうございました。 キーボードマクロをいじって作成したマクロで、作成後しばらくは動いていたのに妙なものですね。 教えていただいて、VBAのヘルプファイルを見てみましたが、 .WindowState = xlNormal の意味とか、必要性が分かりません。 後学の為に教えていただけると幸いです。

関連するQ&A