Excel VBA:ウィンドウ枠解除・再設定等

 
■エクセルを整えて渡したいです
1.一番左シートのA1選択
2.他シートもA1にカーソル
3.全シート表示倍率50%
4.ウィンドウ枠固定は不変
5.枠がセルを隠さず
 
■が、3,5が未解決であり、、、
例:B2で枠固定して、1000行目選択中に実行すると3行目が隠れる

Sub xxx()
Dim ws As Variant
For Each ws In Worksheets
Sheets(ws.Name).Select
Range("A1").Select
End If
Next
Sheets(1).Select
End Sub
  
■アドバイスいただければと思います。宜しくお願い致します

回答の条件
  • 1人1回まで
  • 登録:2008/10/29 23:03:21
  • 終了:2008/11/01 02:56:47

ベストアンサー

id:airplant No.1

airplant回答回数220ベストアンサー獲得回数492008/10/30 01:06:14

ポイント200pt

こんな感じでどうでしょう?

元ソースでは、IfがなくていきなりEnd Ifが出てきていますが、これはたぶん間違いということで。

Option Explicit

Sub xxx()
    Dim ws As Variant
    Dim iCol As Integer, iRow As Integer
    
    For Each ws In Worksheets
        Sheets(ws.Name).Select
        With ActiveWindow
            If .FreezePanes Then    ' 5.枠がセルを隠さず
              iCol = .SplitColumn
              iRow = .SplitRow
              .FreezePanes = False
              Range("A1").Select
              Cells(iRow + 1, iCol + 1).Select
              .FreezePanes = True
            End If
            .Zoom = 50      ' 3.全シート表示倍率50%
        End With
        Range("A1").Select
    Next
    Sheets(1).Select
End Sub
id:zizizirororo

うお~~~~カンペキです!

感動しました!!!

2008/10/30 01:50:08
  • id:airplant
    ありがとうございました。
    うまく目的が果たせたようで良かったですね。
    マクロの記録でやれば、大概のことはExcelが勝手にコードを吐き出してくれるので、それを編集すれば大丈夫です。
    欲を言えば、Dim ws As Variantは、正しい型定義にしたほうがいいですね。
    って、そのまま書いたのは私でした。すみません。.nameももっと簡略化できます。
  • id:zizizirororo
    ほんとうにありがとうございます!
    .splitcolumn と .splitrow というプロパティがわからなくて苦戦してました。

    ■dim as variant はどういう風に変えればよいのでしょうか??
     理解が浅くて恐縮です

    ■また、隠れシートでエラーが出てしまったので、これを対象外としました

    For Each ws In Worksheets
    If Sheets(ws.Name).Visible = True Then '隠れたシートは除外
    Sheets(ws.Name).Select
    With ActiveWindow
    【以下略】
  • id:airplant
    型はWorksheetが正ですね。Variantでもいいのですが、プロパティやメソッドが自動で出ますので、決まっている型はその型を書くと便利です。
    次のような感じ。
      Dim ws As Worksheet

      For Each ws In Worksheets
        ws.Select  ' Sheet(ws.Name)よりこちらのほうがいいです
  • id:zizizirororo
    ありがとうございます!

    まだ下記の問題が残っていることがわかりました。

    ■枠固定していないシートで、例えば1000行目を選択していた場合、
     マクロ実行後、選択セルはA1だが、画面表示は1000行目のままとなってしまう
     
    解決策アドバイスいただけますとたいへん助かります
    宜しくお願い致します!
  • id:airplant
    いるか賞ありがとうございました。
    連絡遅れてしまいました。

    1000行目選択で画面が動かないとのことなのですが、2003で動かしてみたところ問題なく画面はA1に切り替わります。何かExcelオプションがあったかも知れません。
    マクロでは、指定セルをウィンドウの左上にするGotoというメソッドがあるので、selectの替わりにそれを利用してみてはどうでしょうか?
       'Range("A1").Select
       Application.Goto reference:=Range("A1"), scroll:=True

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません