
エクセルvbaでリボンを非表示にして、ブックを最大化して、微調整したいのですが
Workbook_Openイベントで実行すると、シート名が見えない状態になります。
コードはこれです。
Private Sub Workbook_Open()
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)" 'リボンを非表示にする
ActiveWindow.WindowState = xlMaximized 'ウィンドウを最大化する
With ActiveWindow
.WindowState = xlNormal
.Top = 0
.Left = 0
.Width = Application.UsableWidth
.Height = Application.UsableHeight ' ウィンドウが使うことのできる範囲の最大限の高さにする
End With
End Sub
ブックを開いた時はシート名が見えないサイズになってしまうのですが
もう一度手動でWorkbook_Openイベントを実行すると、ちゃんとシート名まで表示されます。
なぜ同じコードなのに結果が違うのでしょうか?
横幅に関しては1回目も2回目も同じです。
No.2
- 回答日時:
こんにちは。
こんな感じのことでしょうか?
' ' ///
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
などについても、試してみるといいと思います。(※元に戻す術を確認してから試してください)
ここら辺を弄ってみれば、色々不思議な仕様が見えてくるので、
私が上のように類推した理由が解って貰えるかも、です。
なんかスッキリしないかも知れませんが、私としてはこんなんで限界です。
No.1
- 回答日時:
私ノン環境では、以下でうまくいきました。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- PowerPoint(パワーポイント) ExcelのVBAコードについて教えてください。 3 2022/05/25 14:32
- Excel(エクセル) 【マクロ】リボン、行列、数式・ステータスバを非表示に 4 2022/12/12 07:32
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/06/19 10:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/01/23 11:02
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
勝手にウィンドウが開いて止ま...
-
他アプリのアクティブな子ウイ...
-
VBA .Value=.Value ?
-
エクセルで1行目から3行目が消...
-
隠れたウィンドウの画面をキャ...
-
OutlookでRSSフィードやメモの...
-
ラジオボタンの初期指定
-
フリーのデータ消去ソフト「DES...
-
メニューバーの高さの取得方法
-
スクロールバーについて
-
EXCEL VBA WindowsAPIの文字列...
-
コンソールアプリケーションで...
-
EXCEL2016で新しいウィンドウを...
-
これはどういう現象でしょう。
-
Alt+P,Alt+NをPostmessageで送...
-
VisualC++ サブウインドウの作り方
-
グラフを別ウィンドウで立ち上...
-
2重起動の防止方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
Vba LongPtrについて教えてくだ...
-
勝手にウィンドウが開いて止ま...
-
ラジオボタンの初期指定
-
ゲームでは結局どっちが良いの?
-
検索の画面がでなくなってしま...
-
Excelの上下を固定したい
-
「&HFFFF」「&H1A」とは?
-
ExcelのBOOKが消えた!
-
エクセルで1行目から3行目が消...
-
[VBA] UserForm を Excel の W...
-
【VB2008】 マウス操作の一時的...
-
VBA .Value=.Value ?
-
作成したウインドウのサイズを...
-
DellノートPC購入で悩んでいま...
-
UWSCで特定のChromeのタブをア...
-
Alt+P,Alt+NをPostmessageで送...
-
隠れたウィンドウの画面をキャ...
-
Console.WriteLine で表示されない
おすすめ情報