Я пытаюсь защитить электронную таблицу от ошибок на работе.У нас были проблемы с тем, что люди копируют ссылки, а потом просто меняют номер RMA.Это будет работать в теории, если все ссылки имеют одинаковое расширение, но некоторые из них являются .xls, а некоторые - .xlsx.
Я сделал так, что когда ячейка в столбце RMA изменяется, смещение ячейки 53 справа от нее получает гиперссылку, сгенерированную открытой функцией GetCRRLink (), вставленной в нее.
Private Sub Worksheet_Change(ByVal ChangedCells As Range)
'Some code omitted here, RMA is defined
If Not Intersect(CurrentCell, RMA) Is Nothing Then
Set CurrentCell.Offset(0, 53).Formula = GetCRRLink(CurrentCell.Value)
End If
'Some code omitted here
End Sub
'Meanwhile, in Module 1
Public Function GetCRRLink(RMA As String) As Hyperlink
On Error Resume Next
Dim TryLink As Hyperlink
Set TryLink.TextToDisplay = "CRR Form"
Set TryLink.Address = "redacted" & RMA & ".xls"
TryLink.Follow
If Err.Number = 0 Then
GetCRRLink = TryLink
Exit Function
End If
Err.Clear
Set TryLink.Address = "redacted" & RMA & ".xlsx"
TryLink.Follow
If Err.Number = 0 Then
GetCRRLink = TryLink
Exit Function
End If
Set TryLink.TextToDisplay = "Error"
GetCRRLink = TryLink
End Function
При попытке установить свойства TextToDisplay или Address в TryLink я получаю «Ошибка компиляции: неверное количество аргументов или неправильное присвоение свойства».