单击指向另一个选项卡的Excel超链接时,将锚点地址设置为活动窗口中的左上单元格

时间:2018-08-13 16:07:12

标签: excel vba excel-vba

我有一台Excel工作簿,其中包含一个目录选项卡,该目录具有到其他选项卡的超链接以及这些选项卡上不同的位置,即名称和区域。

我的问题是,无论我单击什么超链接,如何将其转到该选项卡,该单元格将始终出现在左上角而不是右下角。默认情况下,Excel将目标单元格置于活动窗口的左上方,但是当目标单元格处于活动窗口时,情况并非如此。

我正在尝试使最终用户更轻松,这样他们就不必一直滚动到该部分才能看到它。预先谢谢你。

5 个答案:

答案 0 :(得分:2)

当用户单击链接并将其发送到工作表时,链接到的单元格将成为ActiveCell。如果您在要链接的每个单元格中都包含此内容,则在单击链接时它将自动滚动到所需的单元格。

Private Sub Worksheet_Activate()
    Application.Goto ActiveCell, True
End Sub

唯一的警告是,在某些情况下,用户可能会手动单击某个单元格而无意滚动到该单元格,那么下次激活工作表时会这样做

答案 1 :(得分:2)

轻微添加到:Excel-Hyperlink-Jump-to-cell-and-scroll-window

将此代码放在“目录”表中。 ToC工作表上的所有超链接都将转到该选项卡,然后滚动到超链接目标的行和列。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    ActiveWindow.ScrollRow = ActiveCell.Row
    ActiveWindow.ScrollColumn = ActiveCell.Column
End Sub

答案 2 :(得分:0)

enter image description here

插入->添加超链接->相同文档(您可以指定任何单元格)

如果在WorkSheet中是指锚点,则:-)

答案 3 :(得分:0)

如果将其放在工作表中,激活事件R40将是左上方的单元格,那么也许您可以使用它?

Private Sub Worksheet_Activate()
    Application.Goto Range("R40"), True
End Sub

更进一步,如果您超链接的单元格都包含工作表名称,此方法将起作用!单元地址,例如Sheet2!R40。代码在工作表模块中。

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Dim v

v = Split(Replace(Target.SubAddress, "'", ""), "!")
Application.Goto Sheets(v(0)).Range(v(1)), True

End Sub

答案 4 :(得分:0)

如果您了解如何将VBA与事件一起使用,这应该可以做您想要的。

它包括对其中有空格的工作表的防御。

Sub JumpToPostion()
Dim WS As Worksheet, CellAddress As String
    Set WS = Sheet2
    CellAddress = "z100"

    Application.Goto Range(FixSheet(WS.Name) & "!" & CellAddress), Scroll:=True

End Sub

Private Function FixSheet(txt As String) As String
    If InStr(1, txt, " ") > 0 Then
        FixSheet = "'" & txt & "'"
    Else
        FixSheet = txt
    End If

End Function