[[20160616211310]] 『VBAでウィンドウを整列』(シュウ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでウィンドウを整列』(シュウ)

お世話になります。

あるファイル(ファイル1)に入力する際、付随するファイルへの入力漏れがないように、
auto_openを使ってその他2つのファイルを開いて整列させています。
以下のように書いているのですが、
Sub auto_open()
Workbooks.Open Filename:="2つ目のファイルのパス"
Workbooks.Open Filename:="3つ目のファイルのパス"
Windows.Arrange ArrangeStyle:=xlHorizontal
End Sub
3つのファイルが開いた後、上手く整列することもあるのですが、
きちんと上下に3分割されずにファイル1が最大表示で裏にファイル2そファイル3が開いたりする時があります
ファイルが開き切る前に整列コマンドに移っているのかと思い、
整列の前にsleepを入れてマクロを数秒止めてみたりもしましたがよけいにうまく整列してくれません。
うまく動く時と動かない時があるのが不思議です。
どう書くのが良いでしょうか?
よろしくお願いします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 こちらでは何度やっても整列されますが、だめもとで

 Sub Auto_Open()
    Application.OnTime Now(), "Arange"
 End Sub

 Sub Arange()
    Workbooks.Open Filename:="2つ目のファイルのパス"
    Workbooks.Open Filename:="3つ目のファイルのパス" 
    Windows.Arrange ArrangeStyle:=xlHorizontal
 End Sub

 こうすると、どうでしょうか。

(β) 2016/06/16(木) 22:32


Auto_Open内では描画せず、OnTimeでAuto_Openを抜けてから処理するβさん案でいけるように思いますが、追加案。

APIのSleep関数はCPUを開放せずに指定時間まで回り続けるので、描画処理等の動く隙はできず、意味がないでしょう。
ファイルを読み込んだ後、整列前にDoEventsを入れると改善されませんか?

これでも駄目ならば、グラボの問題かも知れませんので、「ファイル」−「オプション」の「詳細設定」にある、
「ハードウェアのアクセラレータを無効にする」にチェックを入れてみてください。
(???) 2016/06/17(金) 09:08


皆さんスピーディーに的確な解答をありがとうございます。
βさんの案でやってみたところ、良さそうな動きをしています。(1つずつきちんと開いてから整列)
たぶんこれで大丈夫だと思います。
とても勉強になりました。そういう風にやればいいんですね。
???さん、APIのSleep関数はCPUを開放せずに指定時間まで回り続けるので、描画処理等の動く隙はできず、意味がないとのこと、
そうなんですね。付け焼き刃で組み込んでもダメですね〜。
うまく動かない理由も教えていただきスッキリしました。
感謝。

(シュウ) 2016/06/17(金) 22:00


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.