Excel VBA Activex按钮以激活特定按键顺序

Excel VBA Activex按钮以激活特定按键顺序,excel,activex,vba,Excel,Activex,Vba,在浏览工作表时,我使用F5+[enter]返回到同一工作簿中不同工作表上的超链接单元格。 我现在制作了一个Activex按钮作为后退按钮,但我需要脚本使其在单击时执行F5+[enter] 我有许多来自不同区域的超链接,它们指向一个特定的工作表,我基本上希望Activex按钮将光标返回到它的来源 任何帮助都将不胜感激 多谢各位 *****对不起,是我的错,我指的是活动的X按钮***** 编辑并重新标记。非常感谢一般来说,通过VBA模拟键盘的动作需要使用应用程序.SendKeys命令。在您的具体情况

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

我有许多来自不同区域的超链接,它们指向一个特定的工作表,我基本上希望Activex按钮将光标返回到它的来源

任何帮助都将不胜感激 多谢各位

*****对不起,是我的错,我指的是活动的X按钮*****
编辑并重新标记。非常感谢

一般来说,通过VBA模拟键盘的动作需要使用
应用程序.SendKeys
命令。在您的具体情况下,代码为:

Application.SendKeys "{F5}"
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "~" 'The tilde is the Enter key  
一般来说,我不喜欢使用这种方法。例如,在我的计算机上,第三行代码在第一行完成其操作之前运行。在这种情况下,我坐在屏幕上的“转到”对话框中。这就是为什么我通过调用系统延迟处理来分隔这两行

编辑:(我想我删掉了我原来帖子的一部分)

在我看来,您最好的选择是允许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

此设置用于存储前10个超链接地址。应该进一步修改它,以禁止超过10个条目进入数组,并可能将以前的条目向下移动到数组中。

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

    Application.Goto

这不是一个完美的解决方案,但它可以满足您的需求。您只需将这一行添加到单击按钮即可。

我的错误。见上文
    Application.Goto