Отличная проблема!Мы можем использовать события рабочего листа, чтобы справиться с этим.Событие, которое я считаю подходящим, - это событие follow hyperlink .Не уверен, как настроить это через python, если честно.Но было весело работать над этим в любом случае!Goodluck.
Код выглядит следующим образом:
Само событие в листе, содержащем вашу гиперссылку:
Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
AlterHyperLinkedRanged.Main Target
End Sub
Обычный модуль с именем AlterHyperLinkedRanged
Option Explicit
Sub Main(Target As Hyperlink)
Dim ParsedSubAddress As ParsedSubAddress
Set ParsedSubAddress = New ParsedSubAddress
ParsedSubAddress.Parse Target.Subaddress
Dim HyperLinkedRange As Range
Set HyperLinkedRange = ParsedSubAddress.Worksheet.Range(ParsedSubAddress.Address)
HyperLinkedRange.Borders.Color = RGB(0, 255, 0)
End Sub
И класс, который мы создали для хранения данных, переданных в target.subaddress, AKA - диапазон, границу которого мы хотим изменить.Я создал новый объект для обработки и хранения этих данных.Я делаю это на лету, не стесняйтесь улучшать!Этот код будет входить в модуль класса.
Именованный класс ParsedSubAddress :
Option Explicit
Private Type Attrib
Address As String
WS As Worksheet
End Type
Private this As Attrib
Public Property Get Address() As String
Address = this.Address
End Property
Private Property Let Address(value As String)
this.Address = value
End Property
Public Property Get Worksheet() As Worksheet
Set Worksheet = this.WS
End Property
Private Property Let Worksheet(value As Worksheet)
this.WS = value
End Property
Function Parse(ByVal Subaddress As String)
If Not (InStr(Subaddress, "!") > 0) Then
this.Address = Subaddress
Set this.WS = ActiveSheet
Else
this.Address = Mid(Subaddress, InStr(Subaddress, "!") + 1, Len(Subaddress))
Set this.WS = Sheets(Mid(Subaddress, 1, InStr(Subaddress, "!") - 1))
End If
End Function