Python 使用与超链接链接的颜色高亮显示目标单元格
我已经实现了一个功能,其中有跨多行的动态超链接。这些超链接指向同一工作簿中不同工作表中的不同单元格。当我点击任何超链接时,我可以导航到目标单元格Python 使用与超链接链接的颜色高亮显示目标单元格,python,excel,openpyxl,Python,Excel,Openpyxl,我已经实现了一个功能,其中有跨多行的动态超链接。这些超链接指向同一工作簿中不同工作表中的不同单元格。当我点击任何超链接时,我可以导航到目标单元格 现在,默认情况下,该单元格将以黑色粗边框亮显。是否有任何方法可以使该单元格在单击超链接后高亮显示时以特定颜色显示。大问题!我们可以使用工作表事件来处理此问题。我认为适合使用的事件是followhyperlink事件。老实说,我不知道如何通过python进行设置。但不管怎样,做起来很有趣!祝你好运 代码如下: 事件本身,在包含超链接的工作表中: Opti
现在,默认情况下,该单元格将以黑色粗边框亮显。是否有任何方法可以使该单元格在单击超链接后高亮显示时以特定颜色显示。大问题!我们可以使用工作表事件来处理此问题。我认为适合使用的事件是followhyperlink事件。老实说,我不知道如何通过python进行设置。但不管怎样,做起来很有趣!祝你好运 代码如下: 事件本身,在包含超链接的工作表中:
Option Explicit
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
AlterHyperLinkedRanged.Main Target
End Sub
名为AlterHyperLinkedRanged的常规模块
以及我们创建的用于存储target.subaddress指定使用的数据的类,也称为我们希望更改其边界的范围。我创建了一个新对象来处理解析和存储这些数据。我正在做这件事,随时改进!此代码将放入类模块中
名为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
感谢你的努力!我将根据我的场景尝试一下。谢谢
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