Wordのスタイル機能は有名なのですが、Excelにもスタイル機能があって、Wordと同じように見出しスタイルとして目立つような書式にすることができます。
ホームタブの中にセルのスタイルがあって、これで複数のセルに見出しスタイルに設定しておけば、そのスタイルの書式を変えただけで、設定したすべてのセルの書式が変わるという、使えば便利な機能なのです。
しかし、Wordのようにこの見出しを使って目次のようなことをすることはできなくて、Excelのスタイルはただ書式を設定するだけに留まってしまう機能なのであまり使う機会もないのかもしれません。
そこで、次のような動きをする機能を追加できれば便利になるなと思いました。
一行目から3行目までウィンドウ枠の固定をしています。
Nextのボタンを押すと、その最初に表示された行の次の行から使用セルの最終行までを上から探していって、その中に「見出し」スタイルがあったらそこを最初の表示行にします。
Topのボタンを押すと、1行目から下に使用セルの最終行までを上から探していって、初めて見つかった見出しスタイルにジャンプします。
もし、今表示されている行が上から見てはじめての見出しスタイルならばTopのボタンの高さを小さくします。
もし、今表示されている行から仕様セルの最終行まで、上から見て見出しスタイルが無ければNextのボタンの高さを小さくします。
そのVBAが次のコードです。
Sub 見出し検索(btn) Dim sh As Worksheet Dim r As Long Dim firstr As Long Dim nextr As Boolean Set sh = ActiveSheet If btn = "next" Then For r = ActiveWindow.VisibleRange(1).Row + 1 To Range("A1").SpecialCells(xlLastCell).Row If Cells(r, "A").Style Like "*見出し*" Then ActiveWindow.ScrollRow = r Exit For End If Next ElseIf btn = "top" Then For r = 1 To Range("A1").SpecialCells(xlLastCell).Row If Cells(r, "A").Style Like "*見出し*" Then firstr = r ActiveWindow.ScrollRow = r Exit For End If Next End If If firstr <> ActiveWindow.VisibleRange(1).Row Then sh.Shapes("top").Height = 18 Else sh.Shapes("top").Height = 5 End If nextr = False For r = ActiveWindow.VisibleRange(1).Row + 1 To Range("A1").SpecialCells(xlLastCell).Row If Cells(r, "A").Style Like "*見出し*" Then nextr = True Exit For End If Next If nextr Then sh.Shapes("next").Height = 18 Else sh.Shapes("next").Height = 5 End If End Sub
Topの図形をクリックして、リボンに表示される図形の書式タブをクリックしてオブジェクトの選択と表示ボタンをクリックして図形の名前をtopにします。同様にNextの図形の名前をnextにします。
Nextの図形とTopの図形にマクロを登録するのですが、マクロは引数が必要なので、次の記事の操作でマクロを登録します。
コメント