前回は、網掛けに跳ね返されて2列目にセルポインタを移動する仕組みでした。
今回は、網掛けの中を移動するVBAマクロを紹介します。
たとえば、上図でセルポインタを右に移動しようとすると、セルポインタはH3ではな
く、B4へ移動します。
プログラムは前回より少し複雑で、次のようなものになります。
コードは前回と同様、Sheet1のモジュールに記述します。
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Interior.ColorIndex <> xlNone _
Or Target.Row = Cells.Rows.Count _
Or Target.Column = 1 _
Or Target.Count > 1 Then
Exit Sub
End If
Dim lngCol As Long: lngCol = Target.Column
Dim lngRow As Long: lngRow = Target.Row + 1
Do While Cells(lngRow, lngCol - 1).Interior.ColorIndex <> xlNone
lngCol = lngCol - 1
If lngCol = 1 Then
Exit Do
End If
Loop
If lngCol <> Target.Column Then
Cells(lngRow, lngCol).Activate
End If
End Sub
1行下の網掛けがどこまで続いているか、左に向かって参照していくやり方です。
このマクロが前回のよりも使いやすい点は、ジャンプ先の列も、コードを変更する
ことなく、ワークシートに網掛けを設定するだけで任意に指定できるところです。