如何添加超链接在Visual Basic中popup菜单?

如何让其中一个菜单项打开一个超链接?

例如,当在菜单中selectbutton1时打开“ www.google.com ”,button2打开“ www.yahoo.com ”而不是testingmacros。 我尝试将.OnAction改为.FollowHyperlink

我什至尝试只是在.OnAction部分进入超链接,没有运气。

有什么build议?

 Option Explicit Public Const Mname As String = "MyPopUpMenu" Sub DeletePopUpMenu() ' Delete the popup menu if it already exists. On Error Resume Next Application.CommandBars(Mname).Delete On Error GoTo 0 End Sub Sub CreateDisplayPopUpMenu() ' Delete any existing popup menu. Call DeletePopUpMenu ' Create the popup menu. Call Custom_PopUpMenu_1 ' Display the popup menu. On Error Resume Next Application.CommandBars(Mname).ShowPopup On Error GoTo 0 End Sub Sub Custom_PopUpMenu_1() Dim MenuItem As CommandBarPopup ' Add the popup menu. With Application.CommandBars.Add(Name:=Mname, Position:=msoBarPopup, _ MenuBar:=False, Temporary:=True) ' First, add two buttons to the menu. With .Controls.Add(Type:=msoControlButton) .Caption = "Button 1" .FaceId = 71 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" End With With .Controls.Add(Type:=msoControlButton) .Caption = "Button 2" .FaceId = 72 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" End With ' Next, add a menu that contains two buttons. Set MenuItem = .Controls.Add(Type:=msoControlPopup) With MenuItem .Caption = "My Special Menu" With .Controls.Add(Type:=msoControlButton) .Caption = "Button 1 in menu" .FaceId = 71 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" End With With .Controls.Add(Type:=msoControlButton) .Caption = "Button 2 in menu" .FaceId = 72 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" End With End With ' Finally, add a single button. With .Controls.Add(Type:=msoControlButton) .Caption = "Button 3" .FaceId = 73 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro" End With End With End Sub Sub TestMacro() MsgBox "Hi there!" End Sub 

你可以放

 ThisWorkbook.FollowHyperlink "http://......" 

在你的TestMacro

如果您打算使用此作为启动超链接的方法,请将参数添加到Testmacro子过程。

 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro(1)" ... .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro(2)" ... .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro(3)" 

实际的TestMacro子将build立一个Select Case语句来处理所有的菜单命令。

 Sub TestMacro(Optional iTYP As Long = 1) Select Case iTYP Case 1 MsgBox "option 1" ActiveWorkbook.FollowHyperlink "http://www.google.com" Case 2 MsgBox "option 2" ActiveWorkbook.FollowHyperlink "http://www.yahoo.com" Case 3 MsgBox "option 3" ActiveWorkbook.FollowHyperlink "http://www.bing.com" Case Else ActiveWorkbook.FollowHyperlink "http://stackoverflow.com" End Select End Sub 

与Bas的答案一样,你可以设置你的TestMacro为urlinputstring,然后在调用时传递它

 ' Finally, add a single button. With .Controls.Add(Type:=msoControlButton) .Caption = "Button 3" .FaceId = 73 .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro(" & Chr(34) & "http://www.google.com" & Chr(34) & ")" End With Sub TestMacro(url As String) ThisWorkbook.FollowHyperlink url End Sub