使用Excel VBA删除超链接时,如何保留单元格格式?
从单元格中删除超链接也会删除格式设置使用Excel VBA删除超链接时,如何保留单元格格式?,excel,vba,Excel,Vba,从单元格中删除超链接也会删除格式设置 Selection.Hyperlinks.Delete 是否有办法保留格式,或者在删除超链接后需要重新应用格式?我不知道如何防止格式被破坏。我想出的解决方法是在删除超链接之前复制单元格,然后在删除超链接后将格式粘贴回单元格: ' copy cell to remote location to "remember" formatting ActiveCell.Copy Sheets("Templates").Range("a1") ' remove hyp
Selection.Hyperlinks.Delete
是否有办法保留格式,或者在删除超链接后需要重新应用格式?我不知道如何防止格式被破坏。我想出的解决方法是在删除超链接之前复制单元格,然后在删除超链接后将格式粘贴回单元格:
' 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
告诉我一个更好的方法,我会接受你的回答。我知道这也有点奇怪。。。不确定您是否可以接受。试试这个:
Selection.Hyperlinks(1).Address = ""
这就像没有超链接一样。唯一的区别是,光标变为手形而不是默认的加号,但您仍然可以像单击任何其他单元格一样单击它
ActiveCell.Style = "Normal"
换言之:
重新应用应该存在的样式。而“正常”可以在Excell中出现的任一单元格样式的名称中更改。如果希望以这种方式应用自己的样式,请将其添加到cellstyles列表中
如果你想更进一步。您可以将已经存在的cellstyle放入字符串中,然后重新应用
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
如果使用合并的单元格,上述解决方案会出现问题。 这个方法解决了这个问题
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
当您不想将粘贴信息复制到其他位置或从其他位置复制粘贴信息时,这也会有所帮助。我还没有在合并的单元格上尝试过,但我想这应该可以用。我发现解决方案是调用
Range.ClearHyperlinks
而不是
Range.Hyperlinks.Delete
前者清除超链接并保持格式不变。这里的参考资料:Ben,我会仔细研究一下,看看它是否适合我。谢谢不客气!希望对你有用。如果你也有什么想法,请告诉我。这是一个有趣的问题。在这种情况下,我实际上需要删除超链接。不过我喜欢你的想法,我会把它加入我的魔术袋。再次感谢。Excel 2003中是否定义了
ClearHyperlinks
?
Range.Hyperlinks.Delete