Private Sub DeleteAllHyperlinks()
With ThisWorkbook.Worksheets(1)
If Not .ProtectContents Then
Dim iCell As Range: .Hyperlinks.Delete
Set iCell = .UsedRange.Find(What:="=HYPERLINK(*)", _
LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=True)
Do Until iCell Is Nothing
iCell.Style = "Normal"
iCell.Value = iCell.Value
Set iCell = .UsedRange.FindNext
Loop
Else
MsgBox "Снимите защиту листа", vbExclamation, ""
End If
End With
End Sub
Удаление гиперссылок не приводит к удалению текста гиперссылок. Если такое положение вещей недопустимо, то используйте перебор всех гиперссылок, только учтите, что гиперссылка может быть связана не только с ячейкой, но и с автофигурой/рисунком.
Если гиперссылок, созданных с использованием стандартной функции рабочего листа =ГИПЕРССЫЛКА() может быть довольно много и/или Вы используете событие Worksheet_Change() (или аналогичное событие рабочей книги, приложения), а также Volatile функции, то в этом случае, имеет смысл использовать свойства ScreenUpdating, EnableEvents, Calculation объекта Application. Пример их использования можно увидеть здесь.