
慣れない言語で悪戦苦闘しています。
(アクティブな)ウインドウをクライアント領域一杯まで広げたときのサイズを取得する方法を教えてください。
Application.WindowState = xlMaximizedしたあと、
Windows("ブック名").Width、Windows("ブック名").Heightで取れるかと
思ったのですが、これではxlNormalの時のサイズが返ってきてしまうようです。
目的は、右下一杯までウインドウを広げて、左上は下のウインドウが見えるよう、
少し隙間をあけて開きたいためです。
No.1ベストアンサー
- 回答日時:
Application.WindowState = xlMaximized という書き方をやめ、
Windows("ブック名").WindowState = xlMaximized
Windows("ブック名").Width
Windows("ブック名").Height
という書き方に変更してみてください。("ブック名" のところで指定するブックをすべて同一のブックにする)
おそらくですが、
Application.WindowState = xlMaximized で最大化したウィンドウと
Windows("ブック名").Width でサイズを取得しようとしているウィンドウが違っているのではないかと思います。
最大化したブックで見えなくなっていますが、その後ろで Windows("ブック名") は xlNormal なままでいると思います。
Excel 2013 は SDI になりました。(SDI と MDI の違いは分かりますか?)
ブックを複数開いた状態で、すべてのブックが独立した Excel のウィンドウになっていると思います。
なので
Application.WindowState = xxx で操作対象になるのは 「現在アクティブなブックのウィンドウ」 であり、
ActiveWindow.WindowState = xxx
と同じ事になっているんじゃないかと。
Excel が MDI から完全な SDI に変わったことで、私の中で当時大変大きな話題になった記憶があります。。。
ありがとうございます。
ご指摘を受けて気づいたのですが、最終的には2013用にするマクロなのですが、2010上で、つくりながら確かめてましたので、MDI前提の質問になってしまっていました。
落ち着いてソースを眺めてみると、指摘の通り、
xlMaximized → xlNormal
してるのですが、前者だけブックの指定が抜けてました。
それ以外にも問題があり、xlMaximized で最大化したウィンドウの数字(幅、高さ)をxlNormalのウインドウにそのまま適用しても、ウインドウ自体にクローズボックスやリサイズボックスが有ったりなかったりの違いがあり、それぞれ12px,28pxほどズレてしまい、おかしな結果になっていることに気づいていませんでした。これは2010上で試した結果ですので、逆に2013では調整不要なのかもしれません。まずは、2010上では意図通りに動作するようになりましたので、これから2013で確認します。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のエクセルファイルとシー...
-
VBA シートをコピーする際に Co...
-
エクセルのマクロについて教え...
-
【Excel VBA】書き込み先ブック...
-
VBA 別ブックからコピペしたい...
-
【ExcelVBA】zip圧縮されたCSV...
-
別ブックをダイアログボックス...
-
エクセルマクロで、他ブックか...
-
VBAで別のブックにシートをコピ...
-
VBA コードを実行すると画面が...
-
ワイルドカード「*」を使うとう...
-
エクセルVBAでテキストボックス...
-
Excel マクロ ファイルと同じシ...
-
オブジェクトは、このプロパテ...
-
VBA シート名が一致した場合の...
-
VBA アプリケーション定義また...
-
[Excel VBA] 複数のサブフォル...
-
エクセルVBAでBOOKを開く際の処理
-
EXCEL2013 シート内容を別ブッ...
-
【ExcelVBA】インデックスが有...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別ブックをダイアログボックス...
-
VBA シートをコピーする際に Co...
-
VBA 別ブックからコピペしたい...
-
エクセルVBAが途中で止まります
-
VBA コードを実行すると画面が...
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
オブジェクトは、このプロパテ...
-
VBAで別のブックにシートをコピ...
-
Excelマクロ 該当する値の行番...
-
【Excel VBA】書き込み先ブック...
-
複数のエクセルファイルとシー...
-
【ExcelVBA】zip圧縮されたCSV...
-
【ExcelVBA】インデックスが有...
-
VBA シート名が一致した場合の...
-
2つ目のコンボボックスが動作...
-
Excel マクロ ファイルと同じシ...
-
【VBA】全シートの計算式を全て...
-
[Excel]ADODBでNull変換されて...
-
Excel2007VBAファイルの表示に...
おすすめ情報