- ベストアンサー
Excel VBAでリボンを非表示にし、ウィンドウの最大化と微調整を行う方法
- Excel VBAを使用して、シート名が消える問題について質問があります。具体的には、リボンを非表示にし、ブックを最大化し、ウィンドウの微調整を行いたいのですが、Workbook_Openイベントで実行するとシート名が見えない状態になってしまいます。同じコードなのに結果が異なるのはなぜでしょうか?
- Excel VBAを利用して、リボンを非表示にし、ウィンドウを最大化し、微調整を行いたいと考えています。しかし、Workbook_Openイベントで上記のコードを実行すると、シート名が見えない状態になってしまいます。なぜ同じコードなのに結果が異なるのでしょうか?
- Excel VBAを使って、リボンを非表示にし、ウィンドウを最大化し、微調整を行いたいです。しかし、上記のコードをWorkbook_Openイベントで実行すると、シート名が見えない状態になってしまいます。同じコードなのに結果が異なる理由が知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2、cjです。 訂正です。 誤)タスクバー 正)ステータスバー 以上1件、2か所、用語を間違えてしまいました。 失礼しました。
その他の回答 (2)
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。 こんな感じのことでしょうか? ' ' /// Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする ' ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化する Application.WindowState = xlMaximized 'アプリケーションのウィンドウを最大化する? With ActiveWindow .WindowState = xlNormal DoEvents ' タイミングを取る。 DoEvents ' 念の為、もう一回。 .Top = 0 .Left = 0 .Width = Application.UsableWidth .Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする End With End Sub ' ' /// > なぜ同じコードなのに結果が違うのでしょうか? > 横幅に関しては1回目も2回目も同じです。 記憶が曖昧なので、確度の低い説明になりますが、 アプリケーション起動直後、ウィンドウサイズを変更する時に 数式バーだったか、タスクバーだったか、 遅れて表示されること が原因なのではないかと考えています。 "2回目"、というより、一旦アプリケーション起動が済んでいれば、 期待通りの結果が得られる筈です。 .WindowState = xlNormal の直後、瞬間的(一時的)に Application.UsableHeightが[数式バーorタスクバー]の分だけ余分に大きな数字を返す、 というような現象(昔からの仕様?)、と、私は考えています。 実行後の実際のActiveWindow.Heightで比較してみましたが、 ほぼ、数式バーの高さ分だけ大きい高さになっています、が、 誤差があるので(誤差=糊代がないということもあり得ないのですが)、 こちらもあまり自信はないのです。 対策としては、今のところ、DoEvents、しか試せていません。 ところで、 #1さんのご回答を見て疑問に思ったのですが、求める結果は、 ' ' /// Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする Application.WindowState = xlMaximized 'アプリケーションのウィンドウを最大化する? ActiveWindow.WindowState = xlMaximized End Sub ' ' /// ということではないですよね? もし、そちらの方向でシートを大きく表示するのが目的でしたら、 Application.DisplayStatusBar Application.DisplayFormulaBar Application.DisplayFullScreen などについても、試してみるといいと思います。(※元に戻す術を確認してから試してください) ここら辺を弄ってみれば、色々不思議な仕様が見えてくるので、 私が上のように類推した理由が解って貰えるかも、です。 なんかスッキリしないかも知れませんが、私としてはこんなんで限界です。
お礼
回答頂きありがとうございました。
- kybo
- ベストアンサー率53% (349/647)
私ノン環境では、以下でうまくいきました。 Private Sub Workbook_Open() Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする With ActiveWindow .WindowState = xlNormal .Top = 1 .Left = 1 .Width = Application.UsableWidth .Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする End With ActiveWindow.WindowState = xlMaximized End Sub
お礼
回答頂きありがとうございました。
お礼
回答頂きありがとうございました。