【问题标题】:Avoid triggering the mailto hyperlink in excel-vba避免在 excel-vba 中触发 mailto 超链接
【发布时间】:2015-07-23 21:24:48
【问题描述】:

大家早上好。感谢您的关注,如果之前有人问过这个问题,请提前道歉。

我有一个包含多个联系人和电子邮件的电子表格。在工作中,我们会定期向这些联系人发送电子邮件,并通过一些特定的模板进行定制。我创建了一个代码,当您单击 mailto: 超链接时,会显示一个带有下拉菜单的小表单,因此我们可以选择要使用的模板,当单击命令按钮时,它会使用 Outlook 撰写一封电子邮件,填充带有模板的电子邮件正文以及联系人、公司名称、主题等。

所有这些都完美无缺。

然而,它不仅打开了用户窗体;它还会打开一个新的空白电子邮件,就像没有代码一样。

有什么办法可以防止这种情况发生吗?仅在单击电子邮件地址时执行我的代码?

提前致谢

【问题讨论】:

  • 您能否在加载工作表时运行代码来关闭所有超链接?类似于:ActiveSheet.Hyperlinks.Delete。或者超链接是否会启动您的代码以加载您的自定义表单? (不确定您用于打开表单的 OnClick 事件。)
  • 是的,点击超链接会显示表单,其中有一个命令按钮;通过单击按钮,它会运行一个宏来完成其余的工作。这是显示表单的代码: Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) If Target.Range.Address = ActiveCell.Address Then UserForm1.Show Exit Sub End If End Sub
  • 很好的建议,@SiddharthRout。那工作得很好。我检查了 instr(target.text,"@") 0 是否显示我的用户表单。

标签: vba email excel


【解决方案1】:

不,您不能取消 FollowHyperlink。 This 之前已经回答过了。

替代方案

使用Worksheet_SelectionChange(ByVal Target As Range) 事件并捕获具有电子邮件的特定范围,并在此事件中启动您的表单。假设您的电子邮件超链接在B2:B30 范围内。然后这样做

A) 从这些单元格中删除所有超链接。见This

B)(可选)如果你想给它们一个超链接的外观,那么将单元格的字体颜色为蓝色并加下划线。

C) 将此代码粘贴到工作表代码区

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("B2:B30")) Is Nothing Then
        MyForm.Show
    End If
End Sub

【讨论】:

  • Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 会更适合这个吗? Worksheet.FollowHyperlink Event
  • 这是第一个想到的想法,但不幸的是这行不通。我的回答中也提到了第一个链接。
  • 道歉 - 我确信我已经使用 Worksheet_FollowHyperlink 做了一些类似的事情,但我今天似乎比平时更妄想。
  • I am more delusional than normal today 你并不孤单。算我一个;)
猜你喜欢
  • 1970-01-01
  • 2018-03-09
  • 1970-01-01
  • 2021-07-29
  • 2011-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多