Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


9519 / 13644 ツリー ←次へ | 前へ→

【26867】ウィンドウ枠の固定 cap 05/7/21(木) 19:24 質問[未読]
【26868】Re:ウィンドウ枠の固定 りん 05/7/21(木) 19:38 回答[未読]
【26872】Re:ウィンドウ枠の固定 cap 05/7/22(金) 0:28 質問[未読]
【26876】Re:ウィンドウ枠の固定 りん 05/7/22(金) 8:32 回答[未読]
【26887】Re:ウィンドウ枠の固定 cap 05/7/22(金) 13:46 お礼[未読]

【26867】ウィンドウ枠の固定
質問  cap  - 05/7/21(木) 19:24 -

引用なし
パスワード
   はじめまして、capです。宜しくお願いします。

PCは、XPホームエディションで、エクセル2000を使っています。

教えてくださいませ。

1ブックに100シート以上あり、シート数が増減します。
質問ですが。2行目と3行目の間に、ウィンドウ枠の固定を、一度に出来ますか?

それとも、1シートづつしか出来ないモノなのですか。

出来るならば、マクロコードを、お教え下さい。

【26868】Re:ウィンドウ枠の固定
回答  りん E-MAIL  - 05/7/21(木) 19:38 -

引用なし
パスワード
   cap さん、こんばんわ。

>質問ですが。2行目と3行目の間に、ウィンドウ枠の固定を、一度に出来ますか?
>それとも、1シートづつしか出来ないモノなのですか。
>出来るならば、マクロコードを、お教え下さい。

アクティブなブックに対して、1シートずつの設定を連続で行なうコードです。
Sub test()
  Dim ws As Worksheet
  Application.ScreenUpdating = False
  '
  For Each ws In ActiveWorkbook.Worksheets
   ws.Select
   ActiveSheet.Range("A3").Select '2-3で固定するため
   With ActiveWorkbook.Windows(1)
     '既に設定してあれば解除する
     If .FreezePanes = True Then .FreezePanes = False
     .FreezePanes = True '設定
   End With
  Next
  Application.ScreenUpdating = True
End Sub
こんな感じです。
非表示のシートがある場合はそこでエラーになるので、分岐が必要になります。

【26872】Re:ウィンドウ枠の固定
質問  cap  - 05/7/22(金) 0:28 -

引用なし
パスワード
   ▼りん さん:こんばんは、
ありがとう御座いました。
実行しましたが、2行目3行目が画面上にあるものは、成功です。
他は十字に太線が入って、だめです。
100シート以上あるのでせが、ほとんど、最終行の290行に、画面は
なっています、
改善出来るでしょうか。
お願いします。
>cap さん、こんばんわ。
>
>>質問ですが。2行目と3行目の間に、ウィンドウ枠の固定を、一度に出来ますか?
>>それとも、1シートづつしか出来ないモノなのですか。
>>出来るならば、マクロコードを、お教え下さい。
>
>アクティブなブックに対して、1シートずつの設定を連続で行なうコードです。
>Sub test()
>  Dim ws As Worksheet
>  Application.ScreenUpdating = False
>  '
>  For Each ws In ActiveWorkbook.Worksheets
>   ws.Select
>   ActiveSheet.Range("A3").Select '2-3で固定するため
>   With ActiveWorkbook.Windows(1)
>     '既に設定してあれば解除する
>     If .FreezePanes = True Then .FreezePanes = False
>     .FreezePanes = True '設定
>   End With
>  Next
>  Application.ScreenUpdating = True
>End Sub
>こんな感じです。
>非表示のシートがある場合はそこでエラーになるので、分岐が必要になります。

【26876】Re:ウィンドウ枠の固定
回答  りん E-MAIL  - 05/7/22(金) 8:32 -

引用なし
パスワード
   cap さん、おはようございます。

>実行しましたが、2行目3行目が画面上にあるものは、成功です。
>他は十字に太線が入って、だめです。
設定するセルが左上端にくると分割できないので、変なところでカットされてしまったようです。すみません。

Sub test()
  Dim ws As Worksheet
  Application.ScreenUpdating = False
  '
  For Each ws In ActiveWorkbook.Worksheets
   ws.Select
   '非表示シートを避ける
   If ws.Visible = xlSheetVisible Then
     With ActiveWorkbook.Windows(1)
      '既に設定してあれば解除する
      If .FreezePanes = True Then .FreezePanes = False
      '位置を決定
      Application.Goto ws.Range("A1"), True
      Application.Goto ws.Range("A3"), False
      '設定
      .FreezePanes = True
     End With
   End If
  Next
  Application.ScreenUpdating = True
End Sub

こんな感じです。

【26887】Re:ウィンドウ枠の固定
お礼  cap  - 05/7/22(金) 13:46 -

引用なし
パスワード
   ▼りん さん:こんにちは。
出来ました!!

ありがとう御座いました。感謝いたします。
>cap さん、おはようございます。
>
>>実行しましたが、2行目3行目が画面上にあるものは、成功です。
>>他は十字に太線が入って、だめです。
>設定するセルが左上端にくると分割できないので、変なところでカットされてしまったようです。すみません。
>
>Sub test()
>  Dim ws As Worksheet
>  Application.ScreenUpdating = False
>  '
>  For Each ws In ActiveWorkbook.Worksheets
>   ws.Select
>   '非表示シートを避ける
>   If ws.Visible = xlSheetVisible Then
>     With ActiveWorkbook.Windows(1)
>      '既に設定してあれば解除する
>      If .FreezePanes = True Then .FreezePanes = False
>      '位置を決定
>      Application.Goto ws.Range("A1"), True
>      Application.Goto ws.Range("A3"), False
>      '設定
>      .FreezePanes = True
>     End With
>   End If
>  Next
>  Application.ScreenUpdating = True
>End Sub
>
>こんな感じです。

9519 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free