【问题标题】:Return to last active cell in range, ignoring any active cell outside of specified range?返回范围内的最后一个活动单元格,忽略指定范围外的任何活动单元格?
【发布时间】:2021-11-29 02:42:32
【问题描述】:

是否可以使用 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 " & PrevCell.Address & Chr(10) & "Active cell is " & ActiveCell.Address
End Sub

感谢任何帮助。我的 VBA 知识非常有限。非常感谢!

【问题讨论】:

  • @braX 编辑帖子以添加代码。不幸的是,这并没有达到我想要的效果,我不知道从这里继续前进
  • 您应该能够使用Worksheet_SelectionChange 事件来监视和存储(在全局变量中)您感兴趣的范围内最后选择的单元格。

标签: excel vba


【解决方案1】:

我自己想通了。我不确定这是最干净的方法,但它对我有用。

我在模块 1 中创建了一个全局变量:

Option Explicit

Global LastCell As Range
Global ReturnToCell As Range

在模块 2 中,我创建了一个 Sub,以后可以使用快捷方式调用它:

Sub CallActive()

     ReturnToCell.Select

End Sub

在 Sheet1 中我写道:

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

然后我将宏 CallActive 分配给 ctrl + t。这整个过程意味着如果我选择指定范围内的任何单元格,然后选择指定范围外的任何单元格,我可以按 ctrl + t 返回到我指定范围内的最后一个活动单元格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-27
    • 2021-12-02
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 2019-03-14
    相关资源
    最近更新 更多