我目前使用Target.Address来识别双击单元格的情况,并运行一段代码将用户带到一个相关的工作表中,展示该单元格中包含的信息。
例如,如果一个单元格显示有3个系统未执行某种操作,如果用户点击该单元格,他们将被带到这3个系统的信息。
目前,我是这样做的:
If Target.Address = "$B$20" Then
Win2KTrackerIncompleteFilter (strEngUnits(9))
ElseIf Target.Address = "$C$20" Then
Win2KTrackerIncompleteFilter (strEngUnits(0))
ElseIf Target.Address = "$D$20" Then
Win2KTrackerIncompleteFilter (strEngUnits(1))
etc
我已将大部分代码放入一个小函数中,因此这个方法似乎可以胜任。但是,如果我在20行上面插入新行(如上例),所有这些引用都会指向错误的位置。我曾尝试通过去除绝对引用(即$符号)来处理此问题,但这只会破坏机制。
请问是否有人能够建议我如何:a) 重写代码以使其更有效率;b) 保护代码以便插入新行并且代码能够记住它所指向的行/列,并相应地更新自己。
If Target.Address = Me.Range("myCell").Address Then
或者在工作簿模块中使用If Target.Address = sh.Range("myCell").Address Then
。 - Dick KusleikaIf Target.Row = Me.Range("myCell").Row Then
。或者,您可以为范围名称添加一些独特的一致性(它们都以“engunits”开头),然后循环遍历所有名称(就像@ mehow最初所做的那样),并检查所有名称是否类似于“engunits *”。 - Dick Kusleika