エクセルで画面分割するときに人間が無意識でやっている作業というのは、
1.エクセルがアクティブウィンドウになっている
2.分割したいウィンドウがアクティブになっている
3.人間が見て分かりやすいように画面をスクロール
4.分割したいセルをハイライトしている
5.メニューから分割を選択
完了
たったこれだけのことをVBAでやろうとすると、ありとあらゆる問題に遭遇する。まず、エクセルが最小化されていたらアウト。分割したいシートがVisible = Falseならアウト。そのシートが手前になっていたとしても、全く違う部分が表示されていたらアウト。Range("A1").Selectしてもアウト。Application.ScreenUpdating = Falseになっていたらアウト。すでに分割状態の場合もアウト。つまり、人間がやる作業と全く同じ画面状況になっていないと画面分割が失敗する。
.FreezePanesプロパティの対象オブジェクトはActiveWindowのみ! もうこれだけで卒倒ものなんだが、画面分割状態だとRange("A1").Selectしても画面がスクロールしない。Activeなオブジェクトに依存するコードって最低なんだが、そういう仕様なんだからあきらめるしかない。どうしたビル・ゲーツ、バカ丸出しだぞw
一応、動いているサンプルを載せておくが、xSheetのセットの仕方は自由にどうぞ。あと、.Range("A5")とかハードコードしてるのは分かりやすさのためだけなので、プロはこんなことしないように。
Dim xSheet As Excel.Worksheet
Application.ScreenUpdating = True
For Each xSheet In ThisWorkbook.Worksheets
xSheet.Visible = True
xSheet.Select
ActiveWindow.FreezePanes = False
xSheet.Range("A1").Select '画面をスクロールさせる
xSheet.Range("A5").Select '分割したいセル選択
ActiveWindow.FreezePanes = True
Next
Application.ScreenUpdating = False