打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
EXCEL启动时自动启动窗体
userphoto

2022.06.25 四川

关注

VBA编程时为了界面美观,我们经常用到窗体Form(比如欢迎窗口),那么,如何做到让VBA窗体在EXCEL启动时自动运行呢?

方法有二:

第一,双击ThisWorkbook,输入以下代码(Open事件):

Private Sub Workbook_Open()
    Application.Visible = False     ' 关闭应用对象,只保留窗体。
    Welcome.Show
End Sub

第二,也可以插入一个模块,输入下面自启动代码:

Private Sub Workbook_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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用VBA向Excel菜单栏添加新菜单的通用方法 Excel教程
Excel 如何删掉没用的自定义右键菜单
VBA常用代码解析(第二十五讲)
excel菜单栏和右键菜单被屏蔽的解决办法
VBA 获取Excel内置菜单、对话框的ID和工具栏名称
VBA Excel 创建菜单栏 工具栏
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服