【问题标题】:VBA code that runs like goto functions: "Ctrl-[" and "F5"像 goto 函数一样运行的 VBA 代码:“Ctrl-[”和“F5”
【发布时间】:2013-03-18 03:54:43
【问题描述】:

有没有模拟普通gotoExcel函数Ctrl+[F5的VBA代码?

再举例说明:

在这个Problem.xlsx 中有两个工作表——AlphaBeta

我想要一个代码

  1. Alpha 工作表的单元格A2 上执行 Ctrl+[(即在单元格中获取 Beta!B5 引用)
  2. 以便跳转到Beta 工作表的单元格B5(使用Beta!B5 参考,进行跳转)
  3. 向右移动一个单元格,即Beta 工作表的C5 并将该单元格涂成黄色
  4. 最后执行 F5 以返回 Alpha 工作表的单元格 A2

我在各种关键字上搜索了 2 个小时,例如 gotoctrl-[F5previous selection 等,但无济于事。

补充说明:

我正在尝试模拟 goto 函数 Ctrl-[ 和 F5 以便我所在的任何活动单元格(带有指向另一个工作表中另一个单元格的链接),VBA 代码可以执行跳转、着色和跳转回到原来的工作表。 即下面的代码太严格了

Sub JumpColourJump()
    Worksheets("Beta").Range("B5").Offset(, 1).Interior.Color = vbYellow
    Worksheets("Alpha").Range("A2").Select
End Sub

代码应该灵活跳转到同一文件或活动单元格所引用的另一个文件中的任何工作表。

【问题讨论】:

  • Problem.xlsx 不公开可见(需要注册),所以我删除了链接。请在其他地方重新上传。
  • 对不起,伙计们。我刚刚编辑了文件的链接。它现在应该可以工作了。
  • SkyDrive 也有同样的问题:i.imgur.com/DpwIT5s.png ...虽然还是比一些随机的论坛链接好。
  • 再次道歉..我已经建立了一个新的文件链接。

标签: vba excel


【解决方案1】:

您的大部分代码都可以通过录制宏来生成,但更复杂的部分似乎是:

  • 导航到引用所选单元格的第一个单元格 - this post on superuser 似乎包含一些很好的建议
  • 返回上一张工作表 - 您可以在函数开始时引用活动工作表,然后将其恢复,即:
Dim initalSheet As Worksheet
' Take a reference to the current sheet
Set initialSheet = ActiveSheet

' *** Perform changes here ***

' Return to the initially selected sheet
initialSheet.Select

【讨论】:

    【解决方案2】:

    为了在页面之间来回切换,这样的事情会起作用。

    'follow local hyperlink
    Application.Goto Reference:=Worksheets("Alpha").Cells(1, 1).FormulaR1C1
    'color the cell to the right
    ActiveCell.Offset(0, 1).Interior.Color = vbYellow
    'return using the same method
    

    然后您可以使用ActiveCell.Offset(row, col) 获取正确的单元格并执行操作,并使用相同的方法返回。


    为了返回之前的位置,你可以把它保存在一个变量中,

    Dim returnSheet As String, returnCell As String
    returnSheet = ActiveSheet.Name
    returnCell = CStr(ActiveCell.Address(False, False))
    'Jump to cell, do your magic
    Application.Goto Reference:=Worksheets(returnSheet).Range(returnCell)
    

    对于从一个单元到另一个单元的多次跳转,一个类模块像一个堆栈实现推送和弹出功能将是理想的。

    【讨论】:

    • 感谢克苏鲁。 Ctrl-[ 等于 Application.Goto Reference:=CStr(ActiveCell.FormulaR1C1) “返回”跳转 'F5' 怎么样?
    • @user2180895 您可以将当前位置的值存储在一个变量中(如果是多个嵌套跳转,则可以存储在一个集合中)并回溯您的路径。
    • 这段代码可以显示Goto对话框:Application.Dialogs(xlDialogFormulaGoto)。显示如果有办法对“ok”的点击进行编码,那就是F5 + Enter函数跨度>
    • @user2180895 我认为这是不可能的。无论哪种方式,我都建议您在不与 UI 元素交互的情况下在 VBA 代码中执行此操作,类似于上面详述的方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多