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

我有一个数据格式的单元格范围:

“AAA; BBB; CCC”

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

我在单元格中为“www.google.com”创build了一个超链接,并在“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 

每次单击单元格时,浏览器都会打开Goog​​le,并且不会显示消息框。

我无法弄清楚我的逻辑错误。 我希望你们有任何见解可以给我。

编辑:

我在新的工作表中重写了代码,代码正常工作。 消息框正在显示,单个超链接在浏览器中打开。 但除了个别链接之外,虚拟链接(在这个例子中是Google)也是开放的。 我如何阻止它开放?

我为这些操作使用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()方法,请将该单元格超链接到自身,而不是链接到网站。 这不会启动网站,并显示您的消息框。