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