VBA 激活特定按键序列的 Activex 按钮

VBA Activex button to activate specific keypress seq

在导航我的 sheet 时,我使用 F5+[enter] 导航回我在同一工作簿的不同 sheet 上超链接的单元格。 我现在制作了一个 Activex 按钮作为后退按钮,但我需要脚本使其在单击时执行 F5+[enter]。

我有很多来自不同区域的超链接指向一个特定的 sheet,我基本上想要 Activex 按钮 return 光标从它来的地方回来。

如有任何帮助,我们将不胜感激 谢谢

*****对不起我的错我的意思是Active X Button***** 编辑并重新标记。非常感谢

作为一般说明,通过 VBA 模仿键盘的操作涉及使用 Application.SendKeys 命令。在您的具体情况下,代码为:

Application.SendKeys "{F5}"
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "~" 'The tilde is the Enter key  

一般来说,我更喜欢而不是使用这种方法。例如,在我的计算机上,第三行代码在第一行完成其操作之前运行。在那种情况下,我坐在屏幕上的“转到”对话框中。这就是为什么我将这两行与系统延迟处理的调用分开。

编辑:(我想我删掉了原作的一部分 post)

在我看来,最好的办法是让 Excel 处理返回超链接单元格的流。这也开启了回到最后一个单元之外的可能性。下面是一个松散的代码示例,应该对其进行修改。

在模块中,输入以下代码:

Public strLastSheet(1 To 10) As Worksheet
Public strLastRange(1 To 10) As Range
Public nLastCell As Integer
Public nCurrentIndex As Integer


Sub SelectLastHyperlinkedCellFoShizzle()
    strLastSheet(nCurrentIndex).Activate
    strLastRange(nCurrentIndex).Select

     If nCurrentIndex <= 1 Then
         'Do Nothing
    Else
        nCurrentIndex = nCurrentIndex - 1
    End If

End Sub

在 ThisWorkbook 代码中,输入以下内容:

Private Sub Workbook_Open()
    nLastCell = 0
    nCurrentIndex = 0
End Sub
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
    nLastCell = nLastCell + 1
    Set strLastSheet(nLastCell) = Sh
    Set strLastRange(nLastCell) = Target.Parent
    nCurrentIndex = nLastCell
End Sub

这里设置为存放前10个超链接地址。应该进一步修改以禁止超过 10 的条目进入数组,并可能将之前的条目向下移动数组。

由于 application.goto 函数将最后一个引用存储为默认值,您可以简单地为以下命令绑定一个键

    Application.Goto

这不是完美的解决方案,但它可以满足您的需求。您需要做的就是将此行添加到 button_click.