日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Excel VBA(快捷键)(加菜单)

發(fā)布時(shí)間:2024/7/19 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Excel VBA(快捷键)(加菜单) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

將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 (測試.xls)?? 是excel表的文件名。

第二行:microsoft excel對象 表示vba針對的對象是sheet(data),還是thisworkbook(本工作表)

第三行:窗體,是用來設(shè)計(jì)窗體用的,即,界面容器

第四行:模塊。比如設(shè)計(jì)菜單,就需要用到。(什么叫模塊?鼠標(biāo)能點(diǎn)的都叫模塊,比如要做的菜單,要點(diǎn)擊的按鈕、sheet1等,它也是一種容器,用于存放用戶代碼)

?什么是類?

Dim tx1 As Textbox

這里我們用到一個(gè)類Textbox定義了一個(gè)對象tx1

類是一個(gè)隱者,上面Textbox是VBA已經(jīng)給我們準(zhǔn)備好的一個(gè)類,我們無法知道VBA是怎么準(zhǔn)備的(它的真身被隱藏了),但我們可以知道對象tx1怎么用。VBA把對對象的使用劃分為三種,屬性、方法和事件。

1.窗體模塊?
由于VB是面向?qū)ο蟮膽?yīng)用程序開發(fā)工具,所以應(yīng)用程序的代碼結(jié)構(gòu)就是該程序在屏幕上表示的對應(yīng)模型。根據(jù)定交,對象包含數(shù)據(jù)和代碼。應(yīng)用程序中的每個(gè)窗體都有一個(gè)相對應(yīng)的窗體模塊(文件擴(kuò)展名為.frm)?
窗體模塊是VB應(yīng)用程序的基礎(chǔ)。窗體模塊可以包含處理事件的過程、通用過程以及變量、常數(shù)、自定義類型和外部過程的窗體級聲明。寫入窗體模塊的代碼是該窗體所屬的具體應(yīng)用程序?qū)S玫?#xff1b;也可以引用該程序內(nèi)的其它窗體和對象?
每個(gè)窗體模塊都包含事件過程,在事件過程中有為響應(yīng)該事件而執(zhí)行的程序段。窗體可包含控件。在窗體模塊中,對窗體上的每個(gè)控件都有一個(gè)對應(yīng)的事件過程集。除了事件過程,窗體模塊還可包含通用過程,它對來自該窗體中任何事件過程的調(diào)用都作出響應(yīng)。


2.標(biāo)準(zhǔn)模塊?
標(biāo)準(zhǔn)模塊是程序中的一個(gè)獨(dú)立容器,包含全局變量、Function(函數(shù))過程和Sub過程(子過程)。?
可將那些與特定窗體或控件無關(guān)的代碼放入標(biāo)準(zhǔn)模塊中。標(biāo)準(zhǔn)模塊中包含應(yīng)用程序內(nèi)的允許其它模塊訪問的過程和聲明。它們可以包含變量、常數(shù)、類型、外部過程和全局聲明或模塊級聲明。


3.類模塊?
在VB中類模塊是面向?qū)ο缶幊痰幕A(chǔ)。可以在類模塊中編寫代碼建立新對象。這些新對象可以包含自定義的屬性和方法。實(shí)際上,窗體正是這樣一種類模塊,在其上可安放控件,可顯示窗體窗口。
用類模塊創(chuàng)建對象,這些對象可被應(yīng)用程序內(nèi)的過程調(diào)用。標(biāo)準(zhǔn)模塊只包含代碼,而類模塊包含代碼又包含數(shù)據(jù),可視為沒有物理表示的控件。


?

?

step 1:雙擊thisworkbook,打開代碼窗口輸入:

Private Sub Workbook_Open() '打開文件時(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:在工程窗口,右鍵,插入,模塊:

在屬性里將名稱改為: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 = "注冊"
??? .Controls("注冊").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à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版菜單

'來源: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 對象表示。顯示菜單和子菜單的彈出控件用 CommandBarPopup 對象表示。

其他,請參考F1.

commandbarbutton的屬性與方法

Add?

添加菜單欄,方法是使用 CommandBars 對象集合的 Add 方法,然后為 Menubar 參數(shù)指定 TRUE 值。

Enabled?

如果 Enabled 屬性的值為 TRUE,那么用戶可以使用 Visual Basic 代碼使指定的菜單欄可見。如果 Enabled 屬性的值為 FALSE,用戶就無法讓菜單欄可見。不過,菜單欄將出現(xiàn)在可用命令欄列表中。
Protection?

使您可以通過特定用戶操作來保護(hù)菜單欄。
Position?

指定新菜單欄相對于程序窗口的位置。菜單欄相對于程序窗口的位置可以是以下 MsoBarPosition 常量屬性之一:msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup(用于創(chuàng)建快捷菜單)或 msoBarMenuBar(僅用于 Apple Macintosh)。
Visible?

指定控件是可見的,還是隱藏的。

以下代碼示例創(chuàng)建名為 My Command Bar 的自定義命令欄:?
Sub MenuBar_Create() Application.CommandBars.Add Name:="My command bar" End Sub?

以下代碼示例返回活動(dòng)菜單欄的名稱:
Sub MenuBars_GetName()???
?? MsgBox CommandBars.ActiveMenuBar.Name???
End Sub

?


您還可以通過使用 Temporary:=True 參數(shù)來創(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

?

在模塊中:

針對sheet中的退出按鈕

Sub 退出系統(tǒng)()
'
MsgBox "歡迎您下次再使用,如有意見請與我聯(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(快捷键)(加菜单)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。