#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, чтобы вернуться к последней активной ячейке в указанном диапазоне.