ExcelのVBAを利用した、セルポインタのジャンプ(2)

 

前回は、網掛けに跳ね返されて2列目にセルポインタを移動する仕組みでした。

今回は、網掛けの中を移動するVBAマクロを紹介します。

 

CellPtrJumpB1.jpg

 

たとえば、上図でセルポインタを右に移動しようとすると、セルポインタは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行下の網掛けがどこまで続いているか、左に向かって参照していくやり方です。

 

このマクロが前回のよりも使いやすい点は、ジャンプ先の列も、コードを変更する

ことなく、ワークシートに網掛けを設定するだけで任意に指定できるところです。