6

从单元格中删除超链接也会删除格式。

Selection.Hyperlinks.Delete

有没有办法保留格式,或者我需要在删除超链接后重新应用它?

4

8 回答 8

7

我发现解决方案是打电话

Range.ClearHyperlinks

代替

Range.Hyperlinks.Delete

前者清除超链接并保持格式不变。参考这里:https ://msdn.microsoft.com/en-us/library/office/ff194741.aspx

于 2017-01-27T12:04:18.633 回答
2

我知道这也有点奇怪......不确定这是否会被你接受。尝试这个:

Selection.Hyperlinks(1).Address = ""

这几乎就像没有超链接一样。唯一的区别是您的光标变为手形而不是默认的加号,但您仍然可以像任何其他单元格一样单击它。

于 2012-05-14T17:56:29.503 回答
2

如果您使用合并的单元格,上述解决方案会出现问题。这可以解决这个问题

data = Selection.value
Selection.Value = ""                            'this removes the hyperlink
Selection.Font.Underline = xlUnderlineStyleNone 'remove the hyperlink underlining
With ActiveCell.Font                            'replace hyperlink blue with black
   .ThemeColor = xlThemeColorLight1
   .TintAndShade = 0
End With
Selection.Value = data
于 2014-06-05T14:35:00.367 回答
1
For Each cll In Selection
    cll_val = cll.Value
    cll.ClearContents
    cll.Value = cll_val
    With cll.Font
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .Underline = xlUnderlineStyleNone
    End With
Next

This also helps when you don't want to copy paste information to/from another location. Have't tried this on merged cells, but I guess this should work.

于 2015-04-23T11:44:17.097 回答
1

我不知道如何防止格式被破坏。我想出的解决方法是在删除超链接之前复制单元格,然后在删除超链接后将格式粘贴回单元格:

' copy cell to remote location to "remember" formatting
ActiveCell.Copy Sheets("Templates").Range("a1")

' remove hyperlink
ActiveCell.Hyperlinks.Delete

' reapply formatting
Sheets("Templates").Range("A1").Copy
ActiveCell.PasteSpecial Paste:=xlPasteFormats

告诉我一个更好的方法,我会接受你的回答作为答案。

于 2012-05-14T17:48:27.070 回答
1
ActiveCell.Style = "Normal"

换句话说:您重新应用应该存在的样式。而“正常”可以更改为 Excell 中存在的任一单元格样式的名称。如果您希望以这种方式应用您自己的样式,请将其添加到 cellstyles 列表中。

如果你想更进一步。您可以使用已经存在的单元格样式,将其捕获在字符串中并重新应用。

Dim sStyleName as String
sStyleName = ActiveCell.Style 'Capture the current cellstyle
ActiveCell.Hyperlinks.Delete  'Remove the hyperlink
ActiveCell.Style = sStylename 'Reapply the cellstyle used before
于 2013-06-12T00:34:51.437 回答
0
Dim temp As Variant
temp = (RangeObject).Interior.Color
(RangeObject).Hyperlinks.Delete
(RangeObject).Interior.Color = temp
于 2014-05-06T19:57:22.417 回答
0

您还可以将超链接应用到透明的形状并覆盖您想要超链接的单元格。

这里的缺点是光标在未链接时会随着鼠标悬停而变化。形状可以由最终用户移动和删除。

于 2014-11-14T21:41:28.673 回答