【问题标题】:How to create the same hyperlink for every n+x row?如何为每个 n+x 行创建相同的超链接?
【发布时间】:2021-03-31 20:14:36
【问题描述】:

我想为每 n + 44 行创建一个超链接,从第 42 行(即第 42、86、130 行......)开始,在第 42 行到第 85930 行之间。

Sub BackToKTOHyperlinks()
    
    Dim i_counter As Long
    
    For i_counter = 42 To 85930
    
        ActiveSheet.Hyperlinks.Add Range("C" + CStr(i_counter)), Address:="", SubAddress:="'" & Sheet6.Name & "'!A11", TextToDisplay:="Back to Key Tasks Overview"
    
        i_counter = i_counter + 44
    
    Next i_counter
    
End Sub

这里有一个错误,因为第二个 i_counter 将我带到 row 43+44=87 以获得第二个超链接,这不是我想要的。

作为奖励,是否可以让超链接将用户带回到 Sheet6 上最后点击的单元格,而无需转到特定单元格(此处为单元格 A11)?

【问题讨论】:

  • For i_counter = 42 To 85930 Step 44 通常您不会在 For...Next 循环中修改循环计数器。

标签: excel vba hyperlink


【解决方案1】:

当 a mod b = 0 时,您可以使用模运算符在行中添加链接,并将更正的范围放置在目标范围中

Sub BackToKTOHyperlinks()
Dim i_counter As Long

For i_counter = 1 To 85930 - 42
    If i_counter = 1 Then
        ActiveSheet.Hyperlinks.Add Range("C" + CStr(i_counter + 41)), Address:="", SubAddress:="'" & Sheet6.Name & "'!A11", TextToDisplay:="Back to Key Tasks Overview"
    End If  '   If i_counter = 1
    If i_counter Mod 44 = 0 Then
        ActiveSheet.Hyperlinks.Add Range("C" + CStr(i_counter + 42)), Address:="", SubAddress:="'" & Sheet6.Name & "'!A11", TextToDisplay:="Back to Key Tasks Overview"
    End If  '   If i_counter Mod 44 = 0
Next i_counter
End Sub

如果您想返回 sheet6 中的最后一个选定范围,您需要在任何标准模块中为 wiole 工作簿定义全局变量,如 Public rng_Sheet6LastRange as Range,并将 rng_Sheet6LastRange =target.address 添加到 sheet6 代码上的 Worksheet_SelectionChange 事件。然后您可以将"'!A11" 替换为rng_Sheet6LastRange 。 ofc 您需要添加条件检查 not rng_Sheet6LastRange Is Nothing 以防止崩溃

【讨论】:

    猜你喜欢
    • 2020-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-28
    • 1970-01-01
    • 2021-08-13
    • 2012-05-10
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多