【问题标题】:Counting Hyperlinks计算超链接
【发布时间】:2016-11-23 00:11:05
【问题描述】:

插入的超链接有一个小问题。如果我从一张空白纸开始并插入一个超链接,然后使用两个单独的复制/粘贴将其复制到另外两个单元格:

Sub hyper1()
    Cells.Clear
    With ActiveSheet
        .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News"
        Range("A1").Copy Range("A2")
        Range("A1").Copy Range("A3")
        MsgBox .Hyperlinks.Count
    End With
End Sub

三个单元格被填满,Excel 正确地将超链接的数量报告为 3

但是,如果我用一个复制/粘贴填充后两个单元格:

Sub hyper2()
    Cells.Clear
    With ActiveSheet
        .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News"
        Range("A1").Copy Range("A2:A3")
        MsgBox ActiveSheet.Hyperlinks.Count
    End With
End Sub

同样的三个单元格被填充,但 Excel 报告的超链接数为 2!!

哪个坏了,Excel 2007 还是我的电脑??

【问题讨论】:

    标签: vba excel


    【解决方案1】:
    Sub hyper3()
        Cells.Clear
        With ActiveSheet
            .Hyperlinks.Add Anchor:=Range("A1"), Address:="http://www.cnn.com/", TextToDisplay:="News"
            Range("A1").Copy Range("A2,A3")
            MsgBox ActiveSheet.Hyperlinks.Count
        End With
    End Sub
    

    逗号分隔将它们分成两个范围而不是一个

    【讨论】:

      【解决方案2】:

      我怀疑这是因为在第二个宏中,超链接被复制为单个范围对象,而不是两个单独的范围(如第一个)。

      Excel 会将其视为 Range 对象(表示指定超链接所附加到的范围)。因此,它会将其视为一个超链接而不是两个。

      如果在宏运行后单击单元格 A2 或 A3 中的任何一个,您可以看到这一点(它们会同时改变颜色,表明超链接已被选中)。

      【讨论】:

      • 哎哟!!因此,如果我想处理工作表上的所有超链接,我必须遍历 Cells 而不是 Hyperlinks ??
      • 恐怕是的。参考您的示例,如果您只是将一个超链接从包含一个单元格 (Range("A1")) 的范围复制到另一个任意大小的单个范围,它仍然只会在工作表上显示为两个超链接作为第二个范围,其粘贴的两个将被计为一次。你可以做的是这样定义你的范围......
      • Sub hyper3() Cells.Clear With ActiveSheet .Hyperlinks.Add Anchor:=Range("A1"), Address:="cnn.com", TextToDisplay:="News" Range("A1 ").Copy Range("A2,A3") MsgBox ActiveSheet.Hyperlinks.Count End With End Sub
      • 抱歉,我对 Stack 有点陌生,还没有完全掌握发布答案的窍门!
      猜你喜欢
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2012-07-20
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      相关资源
      最近更新 更多