如何添加超链接在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