Вернуться к последней активной ячейке в диапазоне, игнорируя любую активную ячейку за пределами указанного диапазона?

#excel #vba

#превосходить #vba

Вопрос:

Можно ли использовать VBA для создания макроса, который выбирает последнюю активную ячейку в указанном диапазоне? Например, если мой определенный диапазон равен A1:A10, я выбираю A2, затем случайным образом выбираю несколько ячеек за пределами моего ранее определенного диапазона, как я могу использовать VBA для возврата к A2? Кроме того, если после того, как я повторно выбрал A2, а теперь перешел на A5, как я вернусь к A5 позже, используя свой макрос?

Код пробовал:

 Sub PreviousCell() Dim PrevCell As Range Range("A2").Select Set PrevCell = ActiveCell Range("A1").Select MsgBox "Previous cell was " amp; PrevCell.Address amp; Chr(10) amp; "Active cell is " amp; ActiveCell.Address End Sub  

Любая помощь будет признательна. Мои знания VBA крайне ограничены. Большое спасибо!

Комментарии:

1. @braX отредактировал сообщение, чтобы добавить код. К сожалению, это не делает того, чего я хочу, и я не уверен, куда двигаться дальше

2. Вы должны иметь возможность использовать Worksheet_SelectionChange событие для отслеживания и хранения (в глобальной переменной) последней выбранной ячейки в интересующем вас диапазоне.

Ответ №1:

Я и сам это понял. Я не уверен, что это самый чистый метод, но он сработал для меня.

Я создал глобальную переменную в модуле 1:

 Option Explicit  Global LastCell As Range Global ReturnToCell As Range  

В модуле 2 я создал вспомогательный модуль, который я мог бы вызвать позже с помощью ярлыка:

 Sub CallActive()   ReturnToCell.Select  End Sub  

В Листе1 я написал:

 Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim LastCell As Range  Set LastCell = Range("[YOUR RANGE HERE]")   If Not Intersect(ActiveCell, LastCell) Is Nothing Then  Set ReturnToCell = ActiveCell  End If  End Sub  

Затем я назначил вызов макрокоманды ctrl t. Весь этот процесс означает, что если я выберу любую ячейку в указанном диапазоне, а затем выберу любую ячейку за пределами указанного диапазона, я могу нажать ctrl t, чтобы вернуться к последней активной ячейке в указанном диапазоне.