【问题标题】:Need to run a macro based on unique ID in worksheet cell需要根据工作表单元格中的唯一 ID 运行宏
【发布时间】:2019-06-20 00:55:54
【问题描述】:

用户将使用用户表单将新信息输入到工作表中。此信息与进入时给出的唯一 ID 相关联(即今年第 7 项的 2019-7)。目前,每条信息都被放置在一行中的单独单元格中。我想隐藏其中一些单元格,但能够允许用户单击该行开头的唯一 ID,这将运行一个宏,该宏将创建一个新工作表,以用户友好的方式显示所有信息。

我尝试创建一个超链接来运行宏,但用于识别超链接的代码不能是特定于单元格的。我需要一种更动态的方式让 excel 识别单击了哪个 ID,然后使用它来收集该行中的其余信息(即隐藏列)。

我最好的选择是在工作表中放置一个私有子项,以识别何时更改/单击了单元格,但仅识别单元格就无法通过它。然后我需要它来识别该单元格的内容,这将是唯一 ID。

我没有创建指向任何内容的超链接的问题,我只需要 excel 在单击超链接时运行宏,然后在该宏中识别被单击的唯一 ID 和/或行。一旦我确定了 ID 或 Row,我就可以从那里获取其他列中的其余信息。

【问题讨论】:

标签: excel vba


【解决方案1】:

您可以使用工作表的BeforeDoubleClick 事件:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$A$7" Then Exit Sub
' below, call the functions/subs that produce your output worksheet
MsgBox "You clicked on " & Target.Address
End Sub

以上适用于单元格 A7。如果您需要将其应用于整个 A 列,请稍作修改:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
' below, call the functions/subs that produce your output worksheet
MsgBox "You clicked on " & Target.Address
End Sub

【讨论】:

  • 我的问题不在于让 excel 识别特定的单元格,而我已经能够使用 Worksheet_Change 做到这一点。但我需要 excel 来获取它现在已识别的那个单元格的内容。
  • 在上面的代码中,该单元格的内容将由Target.ValueTarget.Value2Target.Text 给出,具体取决于您的需要。
  • 做到了!事情总是那么简单。谢谢!
  • 干杯。如果这回答了问题,请考虑将其标记为“已接受”。
猜你喜欢
  • 2017-12-15
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多