{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日切れたサンドイッチ食べても今のところ大丈夫だけど不安な気持ちになるから食べないほうがいい