我的工作表的A到Z列中有数据。我在第13到49行中有超链接,这些超链接跳到下面几行中的特定单元格。例如,第13行中的超链接将跳至第229行。

超级链接很好,直到我在另一台具有不同分辨率的机器上进行演示为止。它没有跳到第229行,而是显示第248行。

我已经修改过thisthis,但是还没有成功。还尝试了此less related答案,以查看是否可以欺骗excel。我也尝试了以下代码:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
r = ActiveCell.Row
Range(Cells(r, 1), Cells(r, 26)).Select
'Target.Range.Select
ActiveWindow.Zoom = True

最佳答案

如果您希望将A229放置在可见工作表区域的左上角,则首先使Excel越过所需工作表的可见部分,然后再使它变得愚蠢。

在A13中,放置一个转到A1229而不是A229的超链接。

Sub setup_Hyperlinks()
    With Worksheets("Sheet1")
        With .Range("A13")
            .Hyperlinks.Delete
            .Hyperlinks.Add Anchor:=.Cells(1), Address:="", SubAddress:="Sheet1!A1229", _
                            ScreenTip:="Jump to row 229", TextToDisplay:="Row 229"
        End With
    End With
End Sub


请注意,实际的子地址目标是A1229,而不是A229

右键单击工作表的名称选项卡,然后选择查看代码。当VBE打开时,将以下内容之一粘贴到工作簿代码表中,标题为类似Book1-Sheet1(代码)。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells(1, 1).Row > 1000 Then  'this will depend on how you craft the method for your own purposes
        Application.Goto _
          Reference:=Target.Cells(1, 1).Offset(-1000, 0)
        '[optional] move one row down for personal aesthetics
        'ActiveWindow.SmallScroll Down:=-1
    End If
End Sub


... 要么,

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    If ActiveCell.Row > 1000 Then  'this will depend on how you craft the method for your own purposes
        Application.Goto _
          Reference:=ActiveCell.Offset(-1000, 0)
        '[optional] move one row down for personal aesthetics
        'ActiveWindow.SmallScroll Down:=-1
    End If
End Sub


使用一个或另一个,但不能同时使用。前者似乎在我的系统上几乎没有屏幕“闪烁”。

10-08 11:30