【问题标题】:FollowHyperlink event - How to stop link from opening?FollowHyperlink 事件 - 如何阻止链接打开?
【发布时间】:2014-01-30 07:21:51
【问题描述】:

我有一系列单元格的数据,格式如下:

“AAA;BBB;CCC”

理想情况下,我必须为 AAA、BBB 和 CCC 中的每一个创建一个单独的超链接。由于 Excel 只允许每个单元格有一个超链接,我想我可以在单击虚拟超链接时使用“ShellExecute”拆分单元格文本并打开三个网页。

我在单元格中创建了一个指向“www.google.com”的超链接,并在“FollowHyperlink”事件处理程序中编写了以下代码:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    Dim strArray() As String
    Dim strSamp As String

    strArray() = Split(ActiveCell.Text, ";")

    For i = LBound(strArray) To UBound(strArray)
       strSamp = "www." + strArray(i) + ".com"
       lSuccess = ShellExecute(0, "Open", strSamp)
       MsgBox (strSamp)
    Next i
End Sub

每次单击单元格时,浏览器都会打开 Google,但不会显示消息框。

我无法弄清楚我的逻辑哪里出了问题。如果您能提供任何见解,我将不胜感激。

编辑:

我在新的工作表中重写了代码,并且代码运行正常。消息框现在正在显示,并且各个超链接正在浏览器中打开。但除了单个链接之外,虚拟链接(在本例中为 Google)也正在打开。如何阻止它打开?

【问题讨论】:

  • 试试这个:将单元格超链接到自身而不是网站。
  • 成功了!谢谢 !如果您可以将其写为答案,那么我可以将其标记为已接受的答案。
  • 如果你坚持:)...完成

标签: vba excel


【解决方案1】:

我将Worksheet_BeforeDoubleClick 事件用于此类操作。

假设文本在单元格 A1 中。试试这个。

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpszOp As String, _
ByVal lpszFile As String, ByVal lpszParams As String, _
ByVal LpszDir As String, ByVal FsShowCmd As Long) As Long

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim strArray() As String, strSamp As String
    Dim i As Long

    If Not Intersect(Target, Range("A1")) Is Nothing Then
        strArray = Split(Target.Value, ";")

        For i = LBound(strArray) To UBound(strArray)
            strSamp = "www." + strArray(i) + ".com"
            ShellExecute 0, "Open", strSamp, "", "", SW_SHOWNORMAL
            DoEvents
        Next i
        Cancel = True
    End If
End Sub

编辑:

糟糕,我忘了提到您需要双击单元格A1 才能运行此代码:p

注意:如果您仍想使用Worksheet_FollowHyperlink() 方法,请将单元格超链接到其自身而不是网站。这不会启动网站并显示您的消息框。

【讨论】:

  • 这段代码运行起来就像一个魅力!但我必须让单元格包含超链接。
猜你喜欢
  • 2012-08-31
  • 2022-07-11
  • 1970-01-01
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
  • 2011-06-19
  • 2021-06-26
  • 1970-01-01
相关资源
最近更新 更多