vba的窗体中如何添加菜单?

我说的是在VBA环境中,如在office或者其他软件里面,都提供了VBA二次开发环境,而不是在VB中。

VB实现窗口的弹出式菜单

在Windows95、Windows98或NT的风格中,有按动鼠标器右键弹出下拉菜单的操作,在VB执行环境下,有一些控件本身具有弹下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现PopUpMenu(弹出式菜单),可借助VB的菜单工具来实现。
首先,打开VB的“工具”菜单条,利用“菜单编辑器”为窗体生成一个菜单:
标题(Caption) 菜单条名(Name)
编辑 menuEdit
……复制 mnuCopy
……剪切 munCut
其次,将生成的menuEdit菜单设置为不可视。
Private Sub Form_Load()
Me.menuEdit.Visibe=False
′menuEdit菜单设置为不可视
End Sub
然后,利用MouseDown事件实现任意位置弹出PopUpMenu,如下例:
本例中以RichTexBox控件为例,在其上面实现复制、剪切功能。
1.复制功能的实现。
Private Sub MnuCopy_Click()
Clipboar.Clear′将剪贴板清空
′将RichTexBox控件上选择上的内容复制到剪贴板
Clipboard.SetTextRichTexBox1.SelText
End Sub
2.剪切功能的实现。
Private Sub MnuCut_Click()
Clipboard.Clear ′将剪贴板清空
′将RichTextBox控件上选择了的内容复制到剪贴板
Clipboard.SetTextRichBox1.SelText
′将RichTexBox控件上选择了的内容删除
SendKeys〃{DELETE}〃,True
End Sub
3.在RichTexBox控件的MouseDown事件中实现任意位置弹出PopUPMenu。
OPrivate Sub RichTexBox1_MouseDown(Button As Integer,Shift As Integer,x As Single,Y As Single)
Dim MnuFile AS Menu ′声明一个菜单类型的变量
Set munFile=Me.MenuEdit ′将MenuEdit赋给菜单变量
if Button=2 Then ′判断是否按动鼠标器右键
′判断RichTexBox控件上选择了的内容是否存在,决定复制、剪切菜单条是否可操作。
If Len(RichTexBox.Text)=0 Or Len(RichTexBox.SelText)=0 Then
mnuCopy.Enabled=Flase ′复制菜单条不可操作。
nmuCut.Enabled=False ′剪切菜单条不可操作。
nmuCopy.Enabled=True ′复制菜单条可操作。
nmuCut.Enabled=True ′剪切菜单条可操作。
End IF
PopupMenu mnuFile ′弹出PopUpMenu。
End If
End Sub
这样,在VB执行环境中,操作窗体上的RichTexBox控件,按动鼠标器右键就可弹出下拉菜单,实现复制、剪切功能。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-16
一般情况下用CALL命令即可, 但是在菜单栏调用就比较麻烦点, 首先要建立自己的菜单命令,
方法如下:
Sub auto_open()
Dim AA As CommandBarPopup
On Error Resume Next
On Error GoTo 0
Set AA= Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
AA.Caption = "自定义菜单"'菜单名称自选
With AA.Controls.Add(msoControlButton, , , , True)
.Caption = "自定义按钮"’按钮名称自选
.OnAction = "自定义宏命令"'这里是要调用的宏程序名
End With
end sub本回答被网友采纳
第2个回答  2012-05-04
我也在问

vba的窗体中如何添加菜单?
在Windows95、Windows98或NT的风格中,有按动鼠标器右键弹出下拉菜单的操作,在VB执行环境下,有一些控件本身具有弹下拉菜单的功能,如TexTbox控件等,但大多数编辑类控件以及窗体本身却没有此功能,要在窗口中任意位置实现PopUpMenu(弹出式菜单),可借助VB的菜单工具来实现。 首先,打开VB的“工具”菜单条,利用“菜单编辑器...

Excel 请问,VBA的用户窗体,有办法加鼠标右键菜单吗
当然可以。譬如,在窗体的文本框添加[复制]右键菜单,代码如下:Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) If Button = 2 Then With Application.CommandBars.Add("Dicky", 5) With .Controls.Add(1)...

excel中VBA窗体复合框怎么设置菜单
1、显示call——设置text属性为call就OK啦 2、为call时,单击OK按钮,弹出inputbox对话框,OKbutton设置click事件代码,if listbox(下拉列表框)text=“call” then userform1.show(加载窗体,这个要具体设置)3、其他的太复杂了

vb中弹出式菜单怎么编写子菜单?
1、按下组合键ALT+F11,打开vba代码编辑窗口。2、VBA单元格中生成弹出式菜单第二步,在左侧的vba工程窗口空白区域上右击鼠标,弹出菜单中选择“插入”——“模块”。3、VBA单元格中生成弹出式菜单第三步,在新建的模块中,输入以下代码。4、定义一个CommandBar对象类型,用来保存单元格右键快捷菜单命令项...

...用VBA绘制了一个窗体UserForm1,需要在菜单栏添加一个按钮,单击按钮...
=1, Temporary:=True)NewItem.Caption = "Function 1"NewItem.OnAction = "模块1.function1"Exit Sub End Sub 以上代码放到thisworkbook里,然后在模块1里添加function1 sub function1()UserForm1.show end sub 这样excel启动后会在excel的菜单上新增个菜单Function,点击里边的Function1就可以了。

VBA中textbox添加右键菜单功能!
给你看一下 蓝色幻想的一个程序事例 ,代码放窗体的加载程序里面Sub 添加快捷菜单() Dim mypup As CommandBar Dim com As CommandBarButton Dim x 删除命令 Set mypup = Application.CommandBars.Add(Name:="ABC", Position:=msoBarPopup) For x = 1 To 4 Set com = mypup.Controls...

excel表VBA中用代码如何建立多级combobox下拉菜单
ExcelVBA字典实现窗体二级下拉菜单:问题提出:选择确定ComboBox1中的数值后,ComboBox2的下拉列表自动引用ComboBox1中数值对应的列的内容。如何能做到,现在想在加一重判断:就是判断ComboBox2中的数值,如果是原来ComboBox1对应列中已有的值,就直接向下进行,如果原来ComboBox1对应列中没有该值,自动添...

excel如何用VBA在窗体中制作多级下拉菜单?
excel如何用VBA在窗体中制作多级下拉菜单? 比如sheet1的A列中写着学生姓名,B列中写着成绩(优\/良\/中\/差)希望在窗体中有2个复合框,第一个框选择成绩,然后第二个框中的可选内容就变成相应成绩的所有学生姓名求高手解答怎么做~~... 比如sheet1的A列中写着学生姓名,B列中写着成绩(优\/良\/中\/差)希望在窗体...

excelvba怎样创建导航窗体?
或者按快捷键Alt+F11)会打开VBA编辑器在VBA编辑器窗口中菜单->插入->用户窗体会插入一个用户窗体然后就可以编写窗体代码以及在窗体中放入控件.如果要显示用户窗体可以新建一个宏并输入下面这句:userform1.show其中userform1是窗体控件的名称例如:subtest()userform1.showendsub当执行这个宏时用户窗体会显示...

如何给常用宏或vb添加执行按钮?
每次执行宏或VBA时总要从菜单里找,太麻烦了,能不能给常用宏或VBA添加一个执行按钮呢?在工具栏空白位置,右击在弹出的菜单里打开“窗体”工具栏。在“窗体”工具栏上选择“按钮”图标,并在表格空白处拖动出的按钮的大小。在弹出的“指定宏”窗口中,选择按钮对应要执行的宏。并将按钮的名称进行修改...

相似回答