まあ、最良の答えは次のとおりです。これまで、Excel を表計算プログラム以上のものに押し上げないでください。しかし、そうは言っても...何ができるか見てみましょう。
基本的な考え方: 文字通り 1 つのブロックのみを表示し、他のすべての行を非表示にします。これを新しいモジュールに入れます:
Public Sub goto_block(n As Long)
Dim ws As Worksheet
Dim i As Long
If n < 1 Then Exit Sub
Application.ScreenUpdating = False
Set ws = Worksheets(1)
ws.Rows.Hidden = True
ws.Rows( _
CStr((n - 1) * 19 + 1) & ":" & CStr((n - 1) * 19 + 19) _
).EntireRow.Hidden = False
Application.ScreenUpdating = True
ws.Cells((n - 1) * 19 + 1, "A").Select
End Sub
上下のブラウジングは、さまざまな方法で行うことができます。これは、列 M/L の最初の (一番上に表示されている) セルを右クリックして上下に移動する方法を示しています。(これをワークシートのモジュールにコピーします):
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim curBlock As Long
If Target.Cells.Count = 1 Then
If (Target.Row Mod 19) = 1 Then
curBlock = Int((Target.Row - 1) / 19) + 1
If Not Application.Intersect(Target, Me.Columns("M")) Is Nothing Then
goto_block curBlock + 1
Cancel = True
Exit Sub
ElseIf Not Application.Intersect(Target, Me.Columns("L")) Is Nothing Then
goto_block curBlock - 1
Cancel = True
Exit Sub
End If
End If
End If
End Sub