VBA研究 EXCEL啟動時自動啟動窗體

2021-07-04 20:34:37 字數 2574 閱讀 5382

vba程式設計時為了介面美觀,我們經常用到窗體form(比如歡迎視窗),那麼,如何做到讓vba窗體在excel啟動時自動執行呢?

方法有二:

第一,雙擊thisworkbook,輸入以下**(open事件):

第二,也可以插入乙個模組,輸入下面自啟動**:

sub auto_open()

userform1.show

end sub

兩種方法都可以啟動vba窗體(關閉窗體:unload userform1或者userform1.hide)。

上面兩個過程其實就是乙個自啟動過程,除了啟動窗體,還可以幹很多其他的事情,比如增加選單,總之,一些需要在excel啟動後就完成的功能都可以放在這些過程中。下面是乙個增加選單的程式:

open事件:

private sub workbook_open()

addnewmenu

end sub

模組中addnewmenu過程,本過程也可以直接放在open方法中,這樣寫是為了可讀性。

'新增選單項

'與新增新選單一樣,在新增選單項及子選單時,使用add方法,且指定合適的控制項型別,其**清單如下:

sub addnewmenu()

dim helpmenu as commandbarcontrol

dim newmenu as commandbarpopup

dim menuitem as commandbarcontrol

dim submenuitem as commandbarbutton

on error resume next

'如果選單已存在,則刪除該選單

commandbars(1).controls("迴圈取貨(&x)").delete

'利用id屬性查詢幫助選單

set helpmenu = commandbars(1).findcontrol(id:=30010)

if helpmenu is nothing then

'如果該選單不存在,則將新選單新增到末尾

'設定新選單為臨時的

set newmenu = commandbars(1).controls.add(type:=msocontrolpopup, temporary:=true)

else

'將新選單新增到幫助選單之前

set newmenu = commandbars(1).controls.add(type:=msocontrolpopup, before:=helpmenu.index, temporary:=true)

end if

'新增選單標題並指定熱鍵

newmenu.caption = "迴圈取貨(&x)"

'新增第乙個選單項

set menuitem = newmenu.controls.add(type:=msocontrolbutton)

with menuitem

.caption = "匯入看板(&k)..."

'新增快捷鍵

.shortcuttext = "ctrl+shift+k"

.faceid = 590 ' 不同的數值代表不同的圖示

.onaction = "impkanban"

end with

'新增第二個選單項

set menuitem = newmenu.controls.add(type:=msocontrolbutton)

with menuitem

.caption = "匯入清單(&q)..."

'新增快捷鍵

.shortcuttext = "ctrl+shift+q"

.faceid = 162

.onaction = "impqingdan"

end with

'新增第三個選單項

'本選單有子選單項,因此其型別為msocontrolpopup

set menuitem = newmenu.controls.add(type:=msocontrolpopup)

with menuitem

.caption = "資料包表(&r)..."

'新增分隔線

.begingroup = true

end with

'新增子選單

'新增第乙個子選單

set submenuitem = menuitem.controls.add(type:=msocontrolbutton)

with submenuitem

.caption = "月彙總(&m)"

.faceid = 110

.onaction = "monthrpt"

end with

'新增第二個子選單

set submenuitem = menuitem.controls.add(type:=msocontrolbutton)

with submenuitem

.caption = "季度彙總(&q)"

.faceid = 222

.onaction = "seasonrpt"

end with

end sub

系統啟動時自動啟動程式

下面主要介紹採用編輯登錄檔的方式來實現。一般系統啟動時自動啟動程式的註冊資訊都在 software microsoft windows currentversion run 裡面。系統啟動時自動啟動 自動開啟的檔案,如果是可執行應用程式,即為程式的路徑及檔名 帶字尾 是否自動啟動,true表示自動啟...

docker mysql啟動時自動執行初始建表指令碼

預設情況下,mysql映象建立的docker容器啟動時只是乙個空的資料庫例項,為了簡化docker部署,我們需要 在docker建立mysql容器的時,資料庫和表已經自動建好,初始化資料也已自動錄入,也就是說容器啟動後資料庫就可用了。這就需要容器啟動時能自動執行sql指令碼。在mysql官方映象中提...

SpringBoot啟動時自動執行sql指令碼

需要配置專案下的yml檔案 在檔案下加如如下配置 data classpath code generator data.sql initialization mode alwaysspring.datasource.initialization mode 初始化模式 springboot2.0 其中...