从单元格中删除超链接也会删除格式。
Selection.Hyperlinks.Delete
有没有办法保留格式,或者我需要在删除超链接后重新应用它?
我发现解决方案是打电话
Range.ClearHyperlinks
代替
Range.Hyperlinks.Delete
前者清除超链接并保持格式不变。参考这里:https ://msdn.microsoft.com/en-us/library/office/ff194741.aspx
我知道这也有点奇怪......不确定这是否会被你接受。尝试这个:
Selection.Hyperlinks(1).Address = ""
这几乎就像没有超链接一样。唯一的区别是您的光标变为手形而不是默认的加号,但您仍然可以像任何其他单元格一样单击它。
如果您使用合并的单元格,上述解决方案会出现问题。这可以解决这个问题
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
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.
我不知道如何防止格式被破坏。我想出的解决方法是在删除超链接之前复制单元格,然后在删除超链接后将格式粘贴回单元格:
' 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
告诉我一个更好的方法,我会接受你的回答作为答案。
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
Dim temp As Variant
temp = (RangeObject).Interior.Color
(RangeObject).Hyperlinks.Delete
(RangeObject).Interior.Color = temp
您还可以将超链接应用到透明的形状并覆盖您想要超链接的单元格。
这里的缺点是光标在未链接时会随着鼠标悬停而变化。形状可以由最终用户移动和删除。