我有一台Excel工作簿,其中包含一个目录选项卡,该目录具有到其他选项卡的超链接以及这些选项卡上不同的位置,即名称和区域。
我的问题是,无论我单击什么超链接,如何将其转到该选项卡,该单元格将始终出现在左上角而不是右下角。默认情况下,Excel将目标单元格置于活动窗口的左上方,但是当目标单元格处于活动窗口时,情况并非如此。
我正在尝试使最终用户更轻松,这样他们就不必一直滚动到该部分才能看到它。预先谢谢你。
答案 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)
答案 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