VBA删除超链接会重置格式
我有一个vba sub,它的设计目的是用超链接功能替换单元格超链接。但是,currentCell.Hyperlinks.Delete行会重置所有单元格格式(字体、字号、粗体、下划线、单元格边框、对齐方式等)。除了手动复制每个单元格属性,然后在删除超链接后重置属性外,是否有其他方法可以防止它执行此操作?另外,设置单元格公式似乎也会重置字体,但如果这是唯一一个出错的属性,我可以处理它VBA删除超链接会重置格式,vba,excel,hyperlink,Vba,Excel,Hyperlink,我有一个vba sub,它的设计目的是用超链接功能替换单元格超链接。但是,currentCell.Hyperlinks.Delete行会重置所有单元格格式(字体、字号、粗体、下划线、单元格边框、对齐方式等)。除了手动复制每个单元格属性,然后在删除超链接后重置属性外,是否有其他方法可以防止它执行此操作?另外,设置单元格公式似乎也会重置字体,但如果这是唯一一个出错的属性,我可以处理它 Sub Test() Dim currentCell As Range Dim directoryBase As
Sub Test()
Dim currentCell As Range
Dim directoryBase As String
directoryBase = "\\examplePath\"
For Each currentCell In Worksheets(2).UsedRange.Cells
If currentCell.Hyperlinks.Count > 0 Then
currentCell.Formula = "=HYPERLINK("" + directoryBase + currentCell.Hyperlinks(1).Address + "",""ü"")"
currentCell.Hyperlinks.Delete
Debug.Print currentCell.Address
End If
Next currentCell
End Sub
谢谢以下是Matteo在代码中的建议(使用辅助单元格):
只需在r.Hyperlinks之后将公式生成器插入循环。删除我发现解决方案是调用
Range.ClearHyperlinks
而不是
Range.Hyperlinks.Delete
前者清除超链接并保持格式不变。此处参考:
我要做的是:1)复制之前单元格的格式;2) 执行你的行动;3) 将单元格的格式粘贴到修改后的格式中。要做到这一点,在手动执行此操作的同时录制一个宏,并让代码使其适应For循环就足够了。谢谢。那个辅助细胞是关键。先前尝试复制和粘贴格式,但超链接.Delete正在清除剪贴板。我必须添加的一件事是mergeRangeAddress=r.MergeArea.Address,后跟Range(mergeRangeAddress)。粘贴格式后进行合并,因为此工作簿的合并单元格非常糟糕。此外,在我的情况下,公式生成器依赖于单元格中的超链接,因此它必须位于r.hyperlinks.Delete之前,而不是之后
Range.Hyperlinks.Delete