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

时间:2015-01-20 16:23:14

标签: excel-vba activex vba excel

在导航我的工作表时,我使用F5 + [enter]导航回到我在同一工作簿中的另一个工作表上进行超链接的单元格。 我现在已经制作了一个Activex按钮作为后退按钮但是我需要脚本使它在点击时执行F5 + [enter]。

我有很多来自不同区域的超链接,这些超链接转到一个特定的工作表,我基本上希望Activex按钮将光标从它返回的位置返回。

任何帮助将不胜感激 谢谢

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

2 个答案:

答案 0 :(得分:0)

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

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

通常,我更喜欢来使用此方法。例如,在我的计算机上,第三行代码在第一行完成其操作之前运行。在这种情况下,我坐在屏幕上的Go To对话框中。这就是为什么我将这两行分开,系统要求延迟处理。

编辑:(我想我切掉了部分原帖)

在我看来,最好的办法是允许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的条目进入数组,并且可能将先前的条目移到数组中。

答案 1 :(得分:0)

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

即可
    Application.Goto

这不是完美的解决方案,但它会做你想要的。您需要做的就是将此行添加到button_click。