Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba FollowHyperlink事件-如何停止打开链接?_Vba_Excel - Fatal编程技术网

Vba FollowHyperlink事件-如何停止打开链接?

Vba FollowHyperlink事件-如何停止打开链接?,vba,excel,Vba,Excel,我有一系列单元格,其数据格式如下: “AAA;BBB;CCC” 理想情况下,我必须为AAA、BBB和CCC中的每一个创建单独的超链接。由于Excel只允许每个单元格有一个超链接,我想我可以拆分单元格文本,并在单击虚拟超链接时使用“ShellExecute”打开三个网页 我在单元格中创建了一个指向“www.google.com”的超链接,并在“FollowHyperlink”事件处理程序中编写了以下代码: Private Sub Worksheet_FollowHyperlink(ByVal Ta

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

“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,并且不会显示消息框

我不知道我的逻辑哪里出错了。如果你们能给我提供任何见解,我将不胜感激

编辑:


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

我在双击前使用
工作表事件来执行此类操作

假设文本位于单元格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


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

此代码运行起来很有魅力!但是我有必要让单元格包含一个超链接。试试这个:将单元格链接到它自己,而不是网站。这很有效!谢谢如果你能把这个写下来作为答案,那么我可以把它标记为被接受的答案。如果你坚持:)。。。多恩