使用Excel VBA(快捷键)(加菜单)
將excel宏安全性調(diào)到中:
?
按alt+f11進(jìn)入vba編輯器:
記住以下快捷鍵:
F7 代碼窗口
F4 屬性窗口
ctrl+R 工程資源窗口
F5 程序運(yùn)行
TAb 代碼縮進(jìn)
SHIFT+TAB? 凸出
?
加菜單:
在excel表中按alt+f11進(jìn)入代碼窗口:
解釋:
第一行:vbaproject (測(cè)試.xls)?? 是excel表的文件名。
第二行:microsoft excel對(duì)象 表示vba針對(duì)的對(duì)象是sheet(data),還是thisworkbook(本工作表)
第三行:窗體,是用來(lái)設(shè)計(jì)窗體用的,即,界面容器
第四行:模塊。比如設(shè)計(jì)菜單,就需要用到。(什么叫模塊?鼠標(biāo)能點(diǎn)的都叫模塊,比如要做的菜單,要點(diǎn)擊的按鈕、sheet1等,它也是一種容器,用于存放用戶代碼)
?什么是類(lèi)?
Dim tx1 As Textbox
這里我們用到一個(gè)類(lèi)Textbox定義了一個(gè)對(duì)象tx1
類(lèi)是一個(gè)隱者,上面Textbox是VBA已經(jīng)給我們準(zhǔn)備好的一個(gè)類(lèi),我們無(wú)法知道VBA是怎么準(zhǔn)備的(它的真身被隱藏了),但我們可以知道對(duì)象tx1怎么用。VBA把對(duì)對(duì)象的使用劃分為三種,屬性、方法和事件。
1.窗體模塊?
由于VB是面向?qū)ο蟮膽?yīng)用程序開(kāi)發(fā)工具,所以應(yīng)用程序的代碼結(jié)構(gòu)就是該程序在屏幕上表示的對(duì)應(yīng)模型。根據(jù)定交,對(duì)象包含數(shù)據(jù)和代碼。應(yīng)用程序中的每個(gè)窗體都有一個(gè)相對(duì)應(yīng)的窗體模塊(文件擴(kuò)展名為.frm)?
窗體模塊是VB應(yīng)用程序的基礎(chǔ)。窗體模塊可以包含處理事件的過(guò)程、通用過(guò)程以及變量、常數(shù)、自定義類(lèi)型和外部過(guò)程的窗體級(jí)聲明。寫(xiě)入窗體模塊的代碼是該窗體所屬的具體應(yīng)用程序?qū)S玫?#xff1b;也可以引用該程序內(nèi)的其它窗體和對(duì)象?
每個(gè)窗體模塊都包含事件過(guò)程,在事件過(guò)程中有為響應(yīng)該事件而執(zhí)行的程序段。窗體可包含控件。在窗體模塊中,對(duì)窗體上的每個(gè)控件都有一個(gè)對(duì)應(yīng)的事件過(guò)程集。除了事件過(guò)程,窗體模塊還可包含通用過(guò)程,它對(duì)來(lái)自該窗體中任何事件過(guò)程的調(diào)用都作出響應(yīng)。
2.標(biāo)準(zhǔn)模塊?
標(biāo)準(zhǔn)模塊是程序中的一個(gè)獨(dú)立容器,包含全局變量、Function(函數(shù))過(guò)程和Sub過(guò)程(子過(guò)程)。?
可將那些與特定窗體或控件無(wú)關(guān)的代碼放入標(biāo)準(zhǔn)模塊中。標(biāo)準(zhǔn)模塊中包含應(yīng)用程序內(nèi)的允許其它模塊訪問(wèn)的過(guò)程和聲明。它們可以包含變量、常數(shù)、類(lèi)型、外部過(guò)程和全局聲明或模塊級(jí)聲明。
3.類(lèi)模塊?
在VB中類(lèi)模塊是面向?qū)ο缶幊痰幕A(chǔ)。可以在類(lèi)模塊中編寫(xiě)代碼建立新對(duì)象。這些新對(duì)象可以包含自定義的屬性和方法。實(shí)際上,窗體正是這樣一種類(lèi)模塊,在其上可安放控件,可顯示窗體窗口。
用類(lèi)模塊創(chuàng)建對(duì)象,這些對(duì)象可被應(yīng)用程序內(nèi)的過(guò)程調(diào)用。標(biāo)準(zhǔn)模塊只包含代碼,而類(lèi)模塊包含代碼又包含數(shù)據(jù),可視為沒(méi)有物理表示的控件。
?
?
step 1:雙擊thisworkbook,打開(kāi)代碼窗口輸入:
Private Sub Workbook_Open() '打開(kāi)文件時(shí)自動(dòng)加載自定義菜單項(xiàng)
??? Menu_Create
End Sub
???????????
Private Sub Workbook_BeforeClose(Cancel As Boolean) '關(guān)閉文件時(shí)自動(dòng)卸載自定義菜單項(xiàng)
?? Menu_Delete
End Sub
?
step 2:在工程窗口,右鍵,插入,模塊:
在屬性里將名稱(chēng)改為:menu
雙擊menu,輸入以下代碼:
Sub Menu_Create()
??? Dim myMnu As Object
??? Set myMnu = CommandBars("Worksheet menu bar").Controls.?Add(Type:=msoControlPopup, Before:=10)
??? With myMnu
??? .Caption = "關(guān)于 &(A)"
??? End With
??? menuItem_Create
End Sub
????????
????????
Sub menuItem_Create()
??? With Application.CommandBars("Worksheet menu bar").Controls("關(guān)于 &(A)")
??? .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "幫助"
??? .Controls("幫助").OnAction = "宏1"
??? .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "注冊(cè)"
??? .Controls("注冊(cè)").OnAction = "宏2"
??? End With
End Sub
????????
????????
Sub Menu_Delete()
CommandBars("Worksheet menu bar").Controls("關(guān)于 &(A)").Delete
End Sub
其中,宏1,宏2可以進(jìn)行單獨(dú)的程序編寫(xiě)。
?
保存,再次打開(kāi)此文件后,菜單中出現(xiàn):
?
恢復(fù)菜單
如果出現(xiàn)程序錯(cuò)誤,而導(dǎo)致菜單固定,可用代碼恢復(fù):
在thisworkbook里輸入:
Sub RestroeBar()
???? Application.CommandBars("Worksheet menu bar").Reset
End Sub
然后運(yùn)行此代碼,即可。
?
還有一種辦法恢復(fù):
在Windows XP中,刪除“C:\Documents and Settings\用戶名\Application Data\Microsoft\Excel”文件夾中的“Excel11.xlb”文件,而在Windows Vista中,該文件在“C:\用戶\用戶名\AppData\Roaming\Microsoft\Excel”文件夾中。“Excel11.xlb”文件中保存了Excel 2003自定義菜單欄和工具欄設(shè)置,刪除該文件后Excel將自動(dòng)恢復(fù)默認(rèn)的菜單欄和工具欄。
呃,很多人會(huì)找不到這個(gè)文件。Application Data是隱藏的。
?
?
如果要加載菜單到鼠標(biāo)右鍵中
則在thisworkbook里加入下面代碼:
'*****************************************************************
'時(shí)間:2011-4-24
'功能:在Excel2007版右鍵菜單中生成2003版菜單
'來(lái)源:http://hi.baidu.com/winas
'*****************************************************************
Sub addto_rightkey()
With Application.CommandBars("cell")
.Reset
With .Controls.Add(Type:=msoControlButton, before:=1)
.Caption = "新加入的右鍵菜單"
.BeginGroup = True
.OnAction = "do_right"
End With
End With
End Sub
'---------------------------------
Sub do_right()
Application.CommandBars("Built-in Menus").ShowPopup
End Sub
'*****************************************************************
Sub del_rightkey()
Application.CommandBars("cell").Reset
End Sub
?
?
?菜單的屬性
?在 VBA 和 Microsoft Visual Basic 中,按鈕和菜單項(xiàng)用 CommandBarButton 對(duì)象表示。顯示菜單和子菜單的彈出控件用 CommandBarPopup 對(duì)象表示。
其他,請(qǐng)參考F1.
commandbarbutton的屬性與方法
Add?
添加菜單欄,方法是使用 CommandBars 對(duì)象集合的 Add 方法,然后為 Menubar 參數(shù)指定 TRUE 值。
Enabled?
如果 Enabled 屬性的值為 TRUE,那么用戶可以使用 Visual Basic 代碼使指定的菜單欄可見(jiàn)。如果 Enabled 屬性的值為 FALSE,用戶就無(wú)法讓菜單欄可見(jiàn)。不過(guò),菜單欄將出現(xiàn)在可用命令欄列表中。
Protection?
使您可以通過(guò)特定用戶操作來(lái)保護(hù)菜單欄。
Position?
指定新菜單欄相對(duì)于程序窗口的位置。菜單欄相對(duì)于程序窗口的位置可以是以下 MsoBarPosition 常量屬性之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于創(chuàng)建快捷菜單)或 msoBarMenuBar(僅用于 Apple Macintosh)。
Visible?
指定控件是可見(jiàn)的,還是隱藏的。
以下代碼示例創(chuàng)建名為 My Command Bar 的自定義命令欄:?
Sub MenuBar_Create() Application.CommandBars.Add Name:="My command bar" End Sub?
以下代碼示例返回活動(dòng)菜單欄的名稱(chēng):
Sub MenuBars_GetName()???
?? MsgBox CommandBars.ActiveMenuBar.Name???
End Sub
?
您還可以通過(guò)使用 Temporary:=True 參數(shù)來(lái)創(chuàng)建自定義命令欄。Temporary:=True 參數(shù)允許命令欄在您退出 Excel 時(shí)自動(dòng)重置。以下代碼使用 Temporary:=True 參數(shù)創(chuàng)建自定義命令欄:
Sub MenuBar_Create()???
Application.CommandBars.Add Name:="My command bar", Temporary:=True??
End Sub
?
在模塊中:
針對(duì)sheet中的退出按鈕
Sub 退出系統(tǒng)()
'
MsgBox "歡迎您下次再使用,如有意見(jiàn)請(qǐng)與我聯(lián)系!!"
ActiveWorkbook.Save '自動(dòng)保存
ActiveWorkbook.Close '關(guān)閉表,相當(dāng)于ctrl+f4
End Sub
引用鏈接:http://hi.baidu.com/winas/item/5fdb2b267dd9e84646996280
轉(zhuǎn)載于:https://www.cnblogs.com/wenxiangchen/p/3237835.html
總結(jié)
以上是生活随笔為你收集整理的使用Excel VBA(快捷键)(加菜单)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OE模块常用表结构
- 下一篇: C# 析构函数(Destructor)和