我有这个vba sub,旨在用HYPERLINK函数替换单元格超链接。但是,currentCell.Hyperlinks.Delete行会导致重置所有单元格格式(字体,字体大小,粗体,下划线,单元格边框,对齐等)。除了手动复制每个单元格属性,然后在删除超链接后重置属性,有没有办法阻止它执行此操作?此外,看起来设置单元格公式也会重置字体,但如果这是唯一搞乱的属性,我可以处理它。
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
由于
答案 0 :(得分:1)
以下是代码中的 Matteo 建议(使用辅助单元格):
Sub dural()
Dim r As Range, helper As Range
Set helper = Range("Z100")
For Each r In ActiveSheet.UsedRange
If r.Hyperlinks.Count > 0 Then
If Intersect(r, helper) Is Nothing Then
r.Copy helper
r.Hyperlinks.Delete
helper.Copy
r.PasteSpecial (xlPasteFormats)
End If
End If
Next r
End Sub
只需在 r.Hyperlinks.Delete
之后将公式制作者插入循环中答案 1 :(得分:1)
我发现解决方案是打电话
Range.Hyperlinks.Delete
而不是
url
前者清除超链接并保持格式不变。参考这里: https://msdn.microsoft.com/en-us/library/office/ff194741.aspx