{VBA} 一つ前に選択していたセルに戻る

何に使うのか知らないけど友達に聞かれたので作ってみた

Dim cellHistories(99) As Range '配列の要素数 = セルの移動履歴残したい数
Dim skipRecord As Boolean

Private Sub Worksheet_SelectionChange(ByVal target As Range)
    Call recordCurrentCell(target)
End Sub

Private Sub recordCurrentCell(target As Range) '(a)配列を後ろにズラして (b)0番目に今のセルを記録
    If Not skipRecord Then 'selectPreviousCell()による呼び出し時(=巻き戻し時)は記録しない
        For i = UBound(cellHistories) - 1 To 0 Step -1 '(a)
            If Not cellHistories(i) Is Nothing Then
                Set cellHistories(i + 1) = cellHistories(i)
            End If
        Next i
        Set cellHistories(0) = target '(b)
    End If
End Sub

Sub selectPreviousCell() '履歴をもとに巻き戻す
    On Error GoTo skip '履歴が無い時は無視
        skipRecord = True '巻き戻し時の移動を記録されるのを防ぐフラッグ
        cellHistories(1).Activate
        For i = 0 To UBound(cellHistories) - 1
            If Not cellHistories(i + 1) Is Nothing Then
                Set cellHistories(i) = cellHistories(i + 1)
            Else
                GoTo skip '履歴が無い時はループを抜ける
            End If
        Next i
skip:
    skipRecord = False '
End Sub

ちなみに消費期限が4日切れたサンドイッチ食べても今のところ大丈夫だけど不安な気持ちになるから食べないほうがいい