精华内容
下载资源
问答
  • 请各位大神们帮帮忙我是...我想通过vba窗体做一个三下拉菜单!三下拉菜单前两放在复合框内最后一放在列表框内!所选内容放在文字框内!例如:某某省某某市某某县!然后把所选内容放在文字框内!谢谢各位大神了!
  • 内涵模板多选及二级联动
  • 多级下拉菜单窗口

    2015-05-18 10:06:34
    实现了仿美团的多级窗口选择效果 使用了popupwindow listview加上checkbox
  • excel多级下拉菜单

    2019-02-21 07:58:14
    用于excel的多级下拉菜单VBA编写,修改好即可使用。
  • 在建立窗体,能建立下拉菜单VBA窗体中自建立菜单,使用及原代码。
  • VBA自定义菜单菜单

    千次阅读 2013-11-15 16:38:42
    在EXCEL中,我们的操作都是通过“工具栏、菜单栏、快捷菜”单实现。EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。...与大家分享关于VBA实现菜单栏管

     

    EXCEL中,我们的操作都是通过“工具栏、菜单栏、快捷菜”单实现。EXCEL通过菜单给我们提供基本操作功能之外,也为我们提供了扩展自定义功能的接口,即自定义自己的工具栏、菜单栏。

    本文着重介绍如何在 Excel 2003版本中通过编程方式自定义菜单和菜单栏方法。其中包含Excel 中管理和自定义菜单栏、菜单、命令、子菜单和快捷菜单,我将通过代码实例分步说明。

    与大家分享关于VBA实现菜单栏管理与自定义菜单栏功能的实现。

    一、简介

    Microsoft Excel 2000以上版本中实现许与自定义菜单栏和菜单相关的常见任务,可以使用“自定义”对话框(见图1.1)。但如果要实现较高级任务或为自定义程序定制菜单栏和菜单,就需要创建 Microsoft Visual Basic for Applications (VBA) 代码。

    有关如何使用“自定义”对话框的更多信息,你可以单击“帮助”菜单上的“Microsoft Excel 帮助”,在“Office 助手”或“搜索向导”中键入自定义菜单栏,然后单击“搜索”查看主题。

    二、命令栏

    Microsoft Office 中,所有工具栏、菜单栏和快捷菜单都是被作为“命令栏”这样一种对象以编程方式控制的。下列所有项目在 VBA 中皆用 CommandBar 对象表示:

    l 菜单栏、工具栏和快捷菜单。

    l 菜单栏和工具栏上的菜单。

    l 菜单、子菜单和快捷菜单上的子菜单。

    您可以修改任何内置的菜单栏和工具栏,还可以创建和修改用您自己的 VBA 代码交付的自定义工具栏、菜单栏和快捷菜单。您可以将程序功能以单个按钮的形式放在工具栏上,或以命令名称组的形式放在菜单上。因为工具栏和菜单都是命令栏,所以可以使用同一类型的控件。

    VBAMicrosoft Visual Basic 中,按钮和菜单项用 CommandBarButton 对象表示。显示菜单和子菜单的弹出控件用 CommandBarPopup 对象表示。在以下示例中,名为“Menu”的控件和名为“Submenu”的控件都是用于显示菜单和子菜单的弹出控件,并且这两个控件是各自的控件集中唯一的 CommandBar 对象。

    Microsoft Excel 中,菜单栏和工具栏被视为是同一种可编程对象,即 CommandBar 对象。可以使用 CommandBar 对象中的控件来指代菜单、菜单项、子菜单和快捷菜单。可以在 Type 参数中使用一个常量为每个控件指定要用于菜单、子菜单或命令的控件类型。

    三、控件常量

    下面是 Excel 2003 中的各种控件常量的列表,这些常量指定用于特定菜单栏控件的图形控件类型:

    MsoControlActiveX*

    MsoControlAutoCompleteCombo***

    MsoControlButton

    MsoControlButtonDropdown

    MsoControlButtonPopup

    MsoControlComboBox

    MsoControlCustom

    MsoControlDropdown

    MsoControlEdit

    MsoControlExpandingGrid

    MsoControlGauge

    MsoControlGenericDropdown

    MsoControlGraphicCombo

    MsoControlGraphicDropdown

    MsoControlGraphicPopup

    MsoControlGrid

    MsoControlLabel

    MsoControlLabelEx***

    MsoControlOCXDropDown

    MsoControlPane **

    MsoControlPopup

    MsoControlSpinner***

    MsoControlSplitButtonMRUPopup

    MsoControlSplitButtonPopup

    MsoControlSplitDropdown

    MsoControlSplitExpandingGrid

    MsoControlWorkPane**

    * 表示 Microsoft Excel 2000 中的新增项

    ** 表示 Microsoft Excel 2002 中的新增项

    *** 表示 Microsoft Office Excel 2003 中的新增项

    四、菜单栏

    菜单栏是一种命令栏。它是一种可在其中添加菜单、菜单项和子菜单的对象。

    有关如何在 Excel 中管理菜单栏和菜单项的更多信息,请按照下列步骤操作:

    1. 启动 Microsoft Visual Basic 编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“Office 助手”框或“应答向导”框中,键入菜单栏,然后单击“搜索”。

    4.Excel 2003Excel 2002 中,单击“添加和管理菜单栏和菜单项”。在 Excel 2000 中,单击“关于菜单和工具栏”。

    可以在运行时修改菜单栏及该菜单栏上的控件。对菜单栏所做的更改可能会影响菜单栏的外观或位置。可对控件进行的更改取决于控件类型。下表列出了最常见的属性和常用于更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    添加菜单栏,方法是使用 CommandBars 对象集合的 Add 方法,然后为 Menubar 参数指定 TRUE 值。

    Enabled

    如果 Enabled 属性的值为 TRUE,那么用户可以使用 Visual Basic 代码使指定的菜单栏可见。如果 Enabled 属性的值为 FALSE,用户就无法让菜单栏可见。不过,菜单栏将出现在可用命令栏列表中。

    Protection

    使您可以通过特定用户操作来保护菜单栏。

    Position

    指定新菜单栏相对于程序窗口的位置。菜单栏相对于程序窗口的位置可以是以下 MsoBarPosition 常量属性之一:msoBarLeftmsoBarTopmsoBarRightmsoBarBottommsoBarFloatingmsoBarPopup(用于创建快捷菜单)或 msoBarMenuBar(仅用于 Apple Macintosh)。

    Visible

    定控件是可见的指,还是隐藏的。

    4.1 Add方法应用于CommandBars对象

    新建一个命令栏并添加到命令栏集合。返回 CommandBar 对象。

    expression.Add ( Name , Position , MenuBar , Temporary )

    l expression必需。该表达式返回一个 CommandBars 对象。

    l NameVariant 类型)可选。新命令栏的名称。如果忽略该参数,则为命令栏指定默认名称(例如:Custom 1)。

    l PositionVariant 类型)可选。新命令栏的位置或类型。可以为下表所列的 MsoBarPosition 常量之一。

    常量

    说明

    msoBarLeftmsoBarTopmsoBarRightmsoBarBottom

    指定新命令栏的左侧、顶部、右侧和底部坐标

    msoBarFloating

    指定新命令栏不固定

    msoBarPopup

    指定新命令栏为快捷菜单

    msoBarMenuBar

    仅适用于 Macintosh

    l MenuBar (Variant类型)可选。设置为 True 将以新命令栏替换活动菜单栏。默认值为 False

    l Temporary (Variant类型)可选。设置为 True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    4.2返回命令栏控件的 ID

    以下代码示例返回活动菜单栏的 ID

    Sub Id_Control ()

    Dim myId as Object

    Set myId = CommandBars("Worksheet Menu Bar").Controls("工具(&T)")

    MsgBox myId.Caption & Chr(13) & MyId.Id

    End Sub

    4.3确定活动菜单栏的名称

    以下代码示例返回活动菜单栏的名称:

    Sub MenuBars_GetName()

    MsgBox CommandBars.ActiveMenuBar.Name

    End Sub

    4.4保存(内置或自定义菜单栏的)活动状态

    您可能需要将 originalMenuBar 变量声明为公共变量,这样,子例程就可以在其他子例程(如 Auto_Close 子例程)中使用该变量。以这种方式声明和使用该变量会将用户的上一个菜单栏重置为初始状态。以下示例宏重置菜单栏:

    Public originalMenuBar as Object

    Sub MenuBars_Capture()

    Set originalMenuBar = CommandBars.ActiveMenuBar

    End Sub

    4.5创建自定义命令栏

    以下代码示例创建名为 My Command Bar 的自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar"

    End Sub

    您还可以通过使用 Temporary:=True 参数来创建自定义命令栏。Temporary:=True 参数允许命令栏在您退出 Excel 时自动重置。以下代码使用 Temporary:=True 参数创建自定义命令栏:

    Sub MenuBar_Create()

    Application.CommandBars.Add Name:="My command bar", Temporary:=True

    End Sub

    4.6显示自定义命令栏

    以下示例创建并显示自定义的“My Custom Bar”菜单栏,然后用它替换内置的菜单栏:

    Sub MenuBar_Show()

    Dim myNewBar As Object

    Set myNewBar = CommandBars.Add(Name:="Custom1", Position:=msoBarFloating)

    '您必须先启用您的自定义菜单栏,然后看见它。

    '使菜单栏添加到自定义对话框列表中的可用菜单栏上。

    '设置菜单属性设置为True取代内置的菜单栏。

    myNewBar.Enabled = True

    myNewBar.Visible = True

    End Sub

    4.7删除自定义命令栏

    以下代码示例删除名为“Custom 1”的自定义菜单栏:

    Sub MenuBar_Delete()

    CommandBars("Custom1").Delete

    End Sub

    4.8隐藏命令栏

    以下代码示例从可用菜单栏列表中删除内置“图表”菜单栏:

    Sub MenuBar_Display()

    CommandBars("Chart").Enabled = False

    End Sub

    4.9显示命令栏

    以下代码示例从可用菜单栏中添加内置“图表”菜单栏:

    Sub MenuBar_Display()

    CommandBars("Chart").Enabled = True

    End Sub

    4.10还原内置命令栏

    还原菜单栏会重置(菜单和菜单项的)默认控件。示例代码还原内置“图表”菜单栏:

    Sub MenuBar_Restore()

    CommandBars("Chart").Reset

    End Sub

    注意:您只能重置内置菜单栏,不能重置自定义菜单栏。

    五、菜单

    5.1 Add方法用于CommandBarControls对象

    新建一个 CommandBarControl 对象并添加到指定命令栏上的控件集合。

    Expression.Add ( Type , Id , Parameter , Before , Temporary )

    l expression必需。该表达式返回一个 CommandBarControls 对象。

    l TypeVariant类型)可选。添加到指定命令栏的控件类型。可以为下列 MsoControlType常量之一:

    常量

    说明

    msoControlButton

    命令按钮

    msoControlEdit

    文本框

    msoControlDropdown

    下拉列表

    msoControlComboBox

    组合框

    msoControlPopup

    弹出菜单

    l IdVariant 类型)可选。指定内置控件的整数。如果该参数为1 ,或者忽略该参数,将在命令栏中添加一个空的指定类型的自定义控件。

    l ParameterVariant 类型)可选。对于内置控件,该参数用于容器应用程序运行命令。对于自定义控件,可以使用该参数向 Visual Basic 过程传递信息,或用其存储控件信息(类似于第二个 Tag 属性值)。

    l BeforeVariant 类型)可选。表示新控件在命令栏上位置的数字。新控件将插入到该位置控件之前。如果忽略该参数,控件将添加到指定命令栏的末端。

    l TemporaryVariant 类型)可选。设置为True 将使新命令栏为临时命令栏。临时命令栏在关闭容器应用程序时删除。默认值为 False

    5.2向命令栏添加自定义菜单控件

    以下代码示例将您通过编程方式添加的菜单名称添加到“工作表”菜单栏中。例如,此代码会将菜单名称“New Menu”添加到“工作表”菜单栏中。

    注意:您可以根据需要为该菜单指定任何名称。

    Sub Menu_Create()

    Dim myMnu As Object

    Set myMnu = CommandBars("Worksheet menu bar").Controls. _

    Add(Type:=msoControlPopup, before:=3)

    With myMnu

    ' "&" 用以指定快捷键字符 (相当于Alt+M).

    .Caption = "New &Menu"

    End With

    End Sub

    5.3禁用命令栏上的菜单控件

    禁用的菜单控件在命令栏中显示为灰色,并且不可用。以下示例禁用“New Menu”菜单:

    Sub Menu_Disable()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = False

    End Sub

    5.4启用命令栏上的菜单控件

    以下代码示例启用您在“禁用命令栏上的菜单控件”一节中禁用的 New Menu 菜单:

    Sub Menu_Disable()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Enabled = True

    End Sub

    5.5删除命令栏上的菜单控件

    以下代码示例从“工作表”菜单栏中删除您在“向命令栏添加自定义菜单控件”一节中创建的“New Menu”菜单:

    Sub Menu_Delete()

    CommandBars("Worksheet menu bar").Controls("New &Menu").Delete

    End Sub

    5.6还原命令栏上的菜单控件

    以下代码示例还原“工作表”菜单栏上的内置“图表”菜单栏:

    Sub Menu_Restore()

    Dim myMnu As Object

    Set myMnu = CommandBars("Chart")

    myMnu.Reset

    End Sub

    六、命令

    可以对命令进行的修改与控件的类型有关。一般来说,按钮要么被启用,要么被隐藏。而编辑框、下拉列表框和组合框较为灵活一些,因为您可以在列表中添加或删除项目。另外,还可以通过查看在列表中选中的项目的值来确定执行的操作。您可以将任何控件的操作更改为内置函数或自定义函数。

    下表列出了最常见的控件属性和更改控件的状态、操作或内容的方法:

    属性或方法

    用途

    Add

    向命令栏添加命令。

    AddItem

    向下拉列表框或组合框的下拉列表部分添加项目。

    Style

    指定按钮上是显示图标还是显示标题。

    OnAction

    指定用户更改控件值时所运行的过程。

    Visible

    指定控件是可见的,还是隐藏的。

    要了解有关 Excel 2003Excel 2002 中菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入菜单,然后按 Enter

    4. 单击“添加和管理菜单栏和菜单项 (Office)”。

    6.1向菜单控件添加分隔条

    以下代码示例在“插入”菜单上的工作表命令之前添加分隔条:

    Sub menuItem_AddSeparator()

    CommandBars("Worksheet menu bar").Controls("插入(&I)") _

    .Controls("工作表(&W)").BeginGroup = True

    End Sub

    注意:要删除分隔条,请将 BeginGroup 属性设置为 False

    6.2在菜单上创建自定义命令控件

    以下代码示例在“工作表”菜单栏的“工具”菜单上创建名为 Custom1 的新命令,然后,当您单击“Custom1”时,它将运行 Code_Custom1 宏:

    Sub menuItem_Create()

    With CommandBars("Worksheet menu bar").Controls("工具(&T)")

    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "Custom1"

    .Controls("Custom1").OnAction = "Code_Custom1"

    End With

    End Sub

    6.3在命令控件旁放置选中标记

    以下代码示例在 Custom1 命令未选中的情况下在其旁边放置一个选中标记;如果 Custom1 命令已选中,则将删除该选中标记:

    Sub menuItem_checkMark()

    Dim myPopup as Object

    Set myPopup = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    If myPopup.Controls("Custom1").State = msoButtonDown Then

    ' 删除选中标记旁边的菜单项。

    myPopup.Controls("Custom1").State = msoButtonUp

    MsgBox "Custom1 is now unchecked"

    Else

    '添加复选标记旁边的菜单项。

    myPopup.Controls("Custom1").State = msoButtonDown

    MsgBox "Custom1 is now checked"

    End If

    End Sub

    6.4禁用命令栏上的命令控件

    以下代码示例禁用您在“在菜单上创建自定义命令控件”一节中在“工具”菜单上创建的 Custom1 命令:

    Sub MenuItem_Disable()

    Dim myCmd as Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    myCmd.Controls("Custom1").Enabled = False

    End Sub

    6.5启用命令栏上的命令控件

    以下代码示例启用您在“禁用命令栏上的命令控件”一节中禁用的 Custom1 命令:

    Sub MenuItem_Enable()

    Dim myCmd as Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    myCmd.Controls("Custom1").Enabled = True

    End Sub

    6.6删除菜单上的命令控件

    以下代码示例删除“文件”菜单上的“保存”命令:

    Sub menuItem_Delete()

    Dim myCmd As Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

    myCmd.Controls("保存(&S)").Delete

    End Sub

    6.7还原菜单上的内置命令控件

    要还原菜单上的命令控件,必须知道该控件的标识 (ID) 号。要确定 ID 号,请参见“返回命令栏控件的 ID”一节。以下示例先删除您在“删除菜单上的命令控件”一节中删除的“保存”命令,然后又将其还原:

    Sub menuItem_Restore()

    Dim myCmd As Object

    Set myCmd = CommandBars("Worksheet menu bar").Controls("文件(&F)")

    ' Id 3 为保存子菜单项ID.

    myCmd.Controls.Add Type:=msoControlButton, ID:=3, Before:=5

    End Sub

    七、子菜单

    当您单击某个命令时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    7.1添加子菜单

    以下代码示例向“工作表”菜单栏上的“工具”菜单添加名为“NewSub”的新子菜单:

    Sub SubMenu_Create()

    Dim newSub as Object

    Set newSub = CommandBars("Worksheet menu bar").Controls("工具(&T)")

    With newSub

    .Controls.Add(Type:=msoControlPopup, Before:=1).Caption="NewSub"

    End With

    End Sub

    7.2向子菜单添加命令

    以下代码示例向“NewSub”子菜单添加名为“SubItem1”的新命令,然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub SubMenu_AddItem()

    Dim newSubItem as Object

    Set newSubItem = CommandBars("Worksheet menu bar") _

    .Controls("工具(&T)").Controls("NewSub")

    With newSubItem

    .Controls.Add(Type:=msoControlButton, Before:=1).Caption = "SubItem1"

    .Controls("SubItem1").OnAction = "Code_SubItem1"

    End With

    End Sub

    7.3禁用子菜单上的命令控件

    以下代码示例禁用您在“向子菜单添加命令”一节中创建的 SubItem 命令:

    Sub SubMenu_DisableItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Enabled = False

    End Sub

    以下代码示例启用同一 SubItem 命令:

    Sub SubMenu_DisableItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Enabled = True

    End Sub

    7.4删除子菜单上的命令

    以下示例删除您在“向子菜单添加命令”一节中在“NewSub”子菜单上创建的 SubItem1 命令:

    Sub SubMenu_DeleteItem()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Controls("SubItem1").Delete

    End Sub

    7.5禁用子菜单控件

    以下代码示例禁用您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DisableSub()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Enabled = False

    End Sub

    注意:要启用已禁用的控件,请将 Enabled 属性设置为 True

    7.6删除子菜单控件

    以下代码示例删除您在“添加子菜单”一节中在“工具”菜单上创建的“NewSub”子菜单:

    Sub SubMenu_DeleteSub()

    CommandBars("Worksheet menu bar").Controls("工具(&T)") _

    .Controls("NewSub").Delete

    End Sub

    八、快捷菜单栏

    快捷菜单是在用户右键单击某个对象时出现的浮动命令栏。快捷菜单栏可以包含与命令栏相同的控件类型,而这些控件的作用也和命令栏上控件的作用相同。在大多数程序中,您无法从程序界面创建或修改快捷菜单,因而必须在运行时创建和修改快捷菜单。

    要获取有关Excel 2002Excel 2003中的快捷菜单的更多信息,请按照下列步骤操作:

    1. 启动 Visual Basic 脚本编辑器。

    2. 在“帮助”菜单上,单击“Microsoft Visual Basic 帮助”。

    3. 在“搜索帮助”框中,键入快捷方式,然后按 Enter

    4. 单击“添加和显示快捷菜单”。

    8.1新建快捷菜单栏

    以下代码示例创建名为“myShortcutBar”的快捷菜单栏:

    Sub Shortcut_Create()

    Dim myShtCtBar as Object

    Set myShtCtBar = CommandBars.Add(Name:="myShortcutBar", _

    Position:=msoBarPopup)

    ' 这显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标.

    myShtCtBar.ShowPopup 200,200

    End Sub

    注意:由于没有添加任何控件(菜单项或子菜单),因此快捷菜单栏出现时是空的。

    九、快捷菜单

    当您右键单击特定的 Excel 对象时会出现快捷菜单栏。Excel 有很多快捷菜单栏,其中包含各种菜单。您还可以创建自定义快捷菜单栏和自定义内置菜单栏。

    9.1在快捷菜单栏上创建命令

    以下代码示例在“myShortcutBar”快捷菜单栏上创建名为 Item1 的新菜单命令。当您单击“Item1”时,它将运行 Code_Item1 宏:

    Sub Shortcut_AddItem()

    Dim myBar as Object

    Set myBar = CommandBars("myShortcutBar")

    With myBar

    .Controls.Add (Type:=msoControlButton, before:=1).Caption = "Item1"

    .Controls("Item1").OnAction = "Code_Item1"

    End With

    myBar.ShowPopup 200,200

    End Sub

    9.2禁用快捷菜单栏上的命令控件

    以下代码示例禁用您在“创建快捷菜单上的命令”一节中创建的 Item1 命令:

    Sub Shortcut_DisableItem()

    Set myBar = CommandBars("myShortcutBar")

    myBar.Controls("Item1").Enabled = False

    myBar.ShowPopup 200,200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    9.3删除快捷菜单栏上的命令

    以下代码示例删除“myShortcutBar”快捷菜单栏上的名为 Item1 的菜单命令:

    Sub Shortcut_DeleteItem()

    Set myBar = CommandBars("myShortcutBar")

    myBar.Controls("Item1").Delete

    myBar.ShowPopup 200,200

    End Sub

    9.4删除快捷菜单栏

    删除快捷菜单栏将导致删除所有菜单项。您无法还原已删除的自定义菜单栏。要还原它,必须重新创建该菜单栏及其所有菜单项和子菜单。

    以下代码示例删除您在“在快捷菜单栏上创建命令”一节中创建的“myShortCutBar”快捷菜单栏:

    Sub Shortcut_DeleteShortCutBar()

    CommandBars("MyShortCutBar").Delete

    End Sub

    9.5还原内置快捷菜单栏上的命令

    以下代码示例还原工作表“单元格”快捷菜单栏上的默认命令:

    Sub Shortcut_RestoreItem()

    CommandBars("Cell").Reset

    End Sub

    十、快捷菜单上的子菜单

    可以在快捷菜单栏上创建子菜单。当您单击某个命令控件时,父菜单的一侧会出现子菜单。作为子菜单控件的命令在其名称右边有一个黑色小箭头。

    10.1在快捷菜单栏上新建子菜单

    以下示例在工作表“单元格”快捷菜单上添加名为“NewSub”的新子菜单:

    Sub ShortcutSub_Create()

    CommandBars("Cell").Controls.Add(Type:=msoControlPopup, before:=1) _

    .Caption = "NewSub"

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标。

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:由于没有添加任何菜单项,因此该子菜单为空。

    10.2在快捷菜单栏的子菜单上创建命令控件

    下面的宏向您在“单元格”快捷菜单上创建的子菜单“NewSub”中添加 SubItem1 命令。然后,当您单击“SubItem1”时,它将运行 Code_SubItem1 宏:

    Sub ShortcutSub_AddItem()

    Dim newSubItem as Object

    Set newSubItem = CommandBars("Cell").Controls("NewSub”)

    With newSubItem

    .Controls.Add(Type:=msoControlButton, before:=1).Caption = "subItem1"

    '点击时subItem1 将运行Code_SubItem1宏。

    .Controls("subItem1").OnAction = "Code_SubItem1"

    End With

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    10.3禁用快捷菜单上的子菜单项控件

    以下代码示例禁用“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DisableItem()

    CommandBars("Cell").Controls("NewSub") _

    .Controls("subItem1").Enabled = False

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.4删除快捷菜单上的子菜单项控件

    以下示例删除“NewSub”子菜单上的 SubItem1 命令:

    Sub ShortcutSub_DeleteItem()

    CommandBars("Cell").Controls("NewSub").Controls("subItem1").Delete

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    10.5禁用快捷菜单上的子菜单控件

    以下代码示例禁用“单元格”快捷菜单栏上的“NewSub”子菜单:

    Sub ShortcutSub_DisableSub()

    CommandBars("Cell").Controls("NewSub").Enabled = False

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    注意:要启用已禁用的项目,请将 Enabled 属性设置为 True

    10.6删除快捷菜单上的子菜单控件

    以下代码示例删除您在“单元格”快捷菜单栏上创建的“NewSub”子菜单:

    Sub ShortcutSub_DeleteSub()

    CommandBars("Cell").Controls("NewSub").Delete

    '显示快捷菜单栏。

    ' 200, 200指的是屏幕上的位置的像素为XY坐标

    CommandBars("Cell").ShowPopup 200, 200

    End Sub

    展开全文
  • 第7章VBA编程基础全国计算机等级考试二级教程 Access数据库程序设计目录 Contents7.1 VBA模块简介7.2 VBA编程环境7.3 VBA程序设计基础7.4 VBA流程控制语句7.5 VBA数7.6 面向对象程序设计的基本概念7.7 过程调用...

    第7章

    VBA编程基础

    全国计算机等级考试二级教程 Access数据库程序设计

    目录 Contents

    7.1 VBA模块简介

    7.2 VBA编程环境

    7.3 VBA程序设计基础

    7.4 VBA流程控制语句

    7.5 VBA数

    7.6 面向对象程序设计的基本概念

    7.7 过程调用和参数传递

    7.8 VBA常用操作

    7.9 用户定义类模块的创建和引用

    7.10 VBA程序错误处理与调试

    7.11  上机指导

    7.1.1 标准模块 3

    标准模块存放的一般都是可以供其他Access 数据库对象或 码使用的公共过程 ,在Access

    2010 中单击 【创建】→ 【宏与代码】组中的按钮,便可创建一个标准模块并进入代码编写环境。

    7.1.2 类模块 4

    类模块是以类的形式封装的模块,是面向对象编程的基本单位。类模块包括系统对象类

    模块和用户定义类模块。

    1 .系统对象类模块

    这类模块可以有 自己的事件代码和处理模块 ,且从属于各 自的窗体和报表。系统对象类模块的

    作用范围是其所属窗体或报表 内部 ,其生命周期伴随窗体或报表的打开而开始 ,伴随窗体或报表的

    关闭而结束。

    2 .用户定义类模块

    用户定义类模块就是用户自行创建和定义的类模块。

    用户定义类模块的创建方法 :在 【创建 】→ 【宏与代码 】组中单 “类模块”按钮 ,在打开的

    VBA 窗口中进行定义即可;或在VBA 窗口中选择 “插入”菜单下的 “类模块”命令进行创建。

    7.1.3 用VBA编写模块过程 5

    模块由声明区和过程构成,声明区用来声明模块所使用的变量等项目,一般位于模块的

    开始部分;过程是具体的模块内容,分为Sub 过程和Function 过程两种类型。

    1 .Sub过程

    Sub 过程又称子过程 ,这类过程会执行一系列 作 ,没有返回值。Sub 过程的定义格式

    如下。

    Sub 过程名

    [ 程序代码]

    End Sub

    7.1.3 用VBA编写模块过程 6

    2 .Function过程

    Function 过程 又称 函数 过程 ,这 类过程 也 执行一系列操作 ,且 可 以有返 回值 。

    Function过程的定义格式如下。

    Function 过程名AS (返回值) 数据类型

    [ 程序代码]

    End Function

    目录 Contents

    7.1 VBA模块简介

    7.2 VBA编程环境

    7.3 VBA程序设计基础

    7.4 VBA流程控制语句

    7.5 VBA数

    7.6 面向对象程序设计的基本概念

    7.7 过程调用和参数传递

    7.8 VBA常用操作

    7.9 用户定义类模块的创建和引用

    7.10 VBA程序错误处理与调试

    7.11  上机指导

    7.2.1 进入VBE窗口的方法 8

    1 .直接进入VBE窗口 3 .通过窗体或报表对象进入VBE窗口

    在 【创建】→ 【宏与代码】组

    u利用控件属性进入VBE 窗口。

    中单击

    展开全文
  • 第16章介绍了使用VB开发AutoCAD的一些知识(将VBA代码转换到VB中,VB窗体和AutoCAD的焦点切换,使用ActiveXDLL封装带有窗体的VB程序)、搜索某个文件夹中所有的文件和VBAIDE的编程,利用这些知识,完全有可能开发出...
  • Access联动下拉列表

    2020-11-04 10:18:02
    Access中窗体实现二级联动下拉示范,用VBA配合SQL查询来做rowsource,实现二级下拉跟着一级内容变化,如果一级内容没有选择,二级显示所有
  • 就是一个VB TreeView控件的用法,代码不多,很容易看懂,适合新生们看看。
  • 创建一个窗体,使用两个复合框制作二级下拉列表,其中一个作为当前打开的所有工作簿的列表,另一个作为所选中的工作簿中所有工作表的列表。 步骤1 按组合键【Alt+F11】打开VBE。 步骤2 选择菜单“插入”→“用户...

    目录

    复合框(ComboBox)控件

    利用复合框制作二级下拉列表


    使用复合框制作一个工作表导航,以便实现工作簿及工作表的切换。

            创建一个窗体,使用两个复合框制作二级下拉列表,其中一个作为当前打开的所有工作簿的列表,另一个作为所选中的工作簿中所有工作表的列表。

    步骤1  按组合键【Alt+F11】打开VBE。
    步骤2  选择菜单“插入”→“用户窗体”,并在窗体中添加两个Label控件以及两个ComboBox控件,然后将Label控件的Caption属性分别设置为“工作簿”和“工作表”。

    步骤3  在“工程资源管理器”中用鼠标右键单击之前插入的窗体,选择“查看代码”,并输入以下代码。 

    Option Explicit
    
    Private Sub ComboBox1_Change()
        Dim sht As Worksheet
        With Me.ComboBox2
            If Me.ComboBox1.Value <> "" Then
                .Clear
                For Each sht In Workbooks(Me.ComboBox1.Value).Worksheets
                    .AddItem sht.Name
                Next sht
            End If
        End With
    End Sub
    
    Private Sub ComboBox1_Enter()
        Dim wbk As Workbook
        With Me.ComboBox1
            .Clear
            For Each wbk In Workbooks
                .AddItem wbk.Name
            Next wbk
        End With
    End Sub
    
    Private Sub ComboBox2_Change()
        Dim sWbk As String
        Dim sSht As String
        
        If Me.ComboBox2.Value <> "" Then
            sWbk = Me.ComboBox1.Value
            sSht = Me.ComboBox2.Value
            
            Workbooks(sWbk).Activate
            Workbooks(sWbk).Worksheets(sSht).Activate
        End If
        
    End Sub
    
    
    Private Sub UserForm_Deactivate()
        Me.ComboBox1.Style = fmStyleDropDownList
        Me.ComboBox2.Style = fmStyleDropDownList
    End Sub
    

    步骤4  返回工作表界面,添加一个ActiveX按钮控件“显示窗体”,并为其添加单击事件代码如下,完成后退出“设计模式”。

    Option Explicit
    
    Private Sub CommandButton1_Click()
        UserForm1.Show
    End Sub
    

    复合框(ComboBox)控件

            复合框(ComboBox)控件的使用方法与列表框(ListBox)控件的使用方法基本相同。事实上,ComboBox是TextBox和ListBox的组合,因而称为复合框。用户可以通过它输入项目或者从下拉的列表中选择项目。
          为了防止用户误输入而造成程序出错,一般可以将ComboBox控件设置为仅能从下拉列表中选择项目,此时需要将其Style属性设置为fmStyleDropDownList(默认值为fmStyleDropDownCombo),表示仅能从列表中选择项目而不能输入。

    利用复合框制作二级下拉列表

            制作二级下拉列表需要实时改变第二级下拉列表的下拉选项。一般地,可以设置第一级下拉列表的Change事件,当第一级下拉列表的内容发生变化时,设置第二级下拉列表的下拉选项。或者可以设置第二级下拉列表的Enter事件,当选中/激活第二级下拉列表时,根据第一级下拉表的内容设置下拉选项。本例选用了后者的方案。
            由于打开的工作簿是动态变化的,为了使第一级的下拉列表动态变化,本例在第一级下拉列表中添加了Enter事件,以获取当前打开的所有工作簿。

    展开全文
  • 制作一级菜单: 以选择性别为例,制作有男、女选项的下拉菜单: 选中“性别”数据区域; 执行“数据/有效性”命令,打开“数据有效性”对话框; 单击“设置”选项卡,在“允许”栏选择“序列”,“来源”中...

    制作一级菜单:
    以选择性别为例,制作有男、女选项的下拉菜单:

    选中“性别”数据区域;
    执行“数据/有效性”命令,打开“数据有效性”对话框;
    单击“设置”选项卡,在“允许”栏选择“序列”,“来源”中输入“男,女”(不含引号,用英文单引号分隔);
    单击“确定”按钮。

    “在下拉菜单中选择一个值之后能同时在另一个单元格里对应出一个数值或是文字”,这要根据实际情况再加工的哦!

    制作二级下拉菜单:
    设置“数据”表

    A列 B列
    部门员工
    A 张三 李四
    B 王二 郑大
    C 刘一 王五
    D 初一 赵钱
    ……
    命名:

    选中A列,在“名称框”中输入“部门”,回车确认。
    选中B列,在“名称框”中输入“员工”,回车确认。
    (名称框位置:“名称框”在标题栏、工具栏下方的空白域,就是当你的鼠标放在任一单元格时,在表格的上方一栏都会显示“A-Z多少列”空白区,当你的鼠标 放在指向上面时,就会显示“名称框”。 )

    在“菜单”表制作下拉菜单:

    制作一级下拉菜单

    选中A1:B1单元格区域;
    执行“数据/有效性”命令,打开“数据有效性”对话框;
    在“设置”选项卡下,“允许”选择“序列”、“来源”中输入“部门,员工”(不含引号,用英文逗号分隔);
    选中“忽略空值”、“提供下拉箭头”,单击“确定”按钮,完成一级下拉菜单制作。

    此时在A1、B1中,单击右侧的下拉按钮进行选择输入。

    制作二级下拉菜单
    从A2单元格起向下选中单元格区域;
    执行“数据/有效性”命令,打开“数据有效性”对话框;
    在“设置”中,“允许”选择“序列”、“来源”中输入公式“=INDIRECT(A$1)”; (注:OFFICE2007与以前的版本不一样)
    选中“忽略空值”、“提供下拉箭头”,单击“确定”按钮,完成“部门”的二级菜单制作。

    同法制作“员工”的二级菜单。此时“来源”中输入公式“=INDIRECT(B$1)”。

    此时在部门、员工下面的单元格中,单击右侧的下拉按钮进行“部门”、“员工”的选择输入。
    二级菜单图示:

    展开全文
  • 引用窗体控件的值,可以用的宏表达式是(B)。A)、Forms! 控件名!窗体名B)、Forms! 窗体名!控件名C)、Forms! 控件名D)、Forms! 窗体名2).在Access系统中提供了(A)执行的宏调试工具。A)、单步B)、同步C)、运行D)、继续3...
  • (2)在[VBA管理器]对话框中单击[Visual Basic编辑器]按钮,进入VBA集成开发环境,选择[插入/用户窗体]菜单项,向工程中添加一个用户窗体。 图2 创建桌子运行界面 (3)在用户窗体上插入如图2所示的相关控件,并按下表...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    一、VBA语言基础...................................................................................................................1 第一节标识符...........................................................
  • 数据库管理系统应用第9章 宏第9章 宏P192学习要点P193宏和宏组的概念序列宏、条件宏和宏组的创建方法Access 中常用的宏操作在窗体和报表中使用宏特殊的宏AutoExec宏的调试和运行9.1 宏概述宏是一个集合,含有一个或...
  • 来源:教育联展网-计算机二级考试 [NextPage] 2.简单应用题 考生文件夹下存在一个数据库文件“samp2.mdb”,里面已经设计好表对象“tStaff”和“tTemp”及窗体对象“fTest”。试按以下要求完成设计: (1)创建一个...
  • 计算机2vf考试范围第一部分 计算机应用基础【教学目标】掌握和了解计算机应用的基本常识,具有使用windows操作系统和使用计算机硬件和软件的初步能力;具有使用字处理软件建立和编辑文档的能力;具有制作电子表格和...
  • 《计算机二级上机试题模拟》由会员分享,可在线阅读,更多相关《计算机二级上机试题模拟(5页珍藏版)》请在人人文库网上搜索。1、四十九套1.基本操作题 在考生文件夹下有一个数据库文件“samp1.mdb”、一个Excel文件...
  • 全国计算机等级考试二级教程——Access数据库程序设计 (151页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!29.9 积分课程号 课程名 学时 教师号 姓名 年龄 课程 授课 ...
  • VBA常用技巧

    2014-12-21 16:39:28
    技巧115 二级组合框 12 技巧116 使用DTP控件输入日期 12 技巧117 使用RefEdit控件选择区域 12 技巧118 如何注册控件 12 技巧119 遍历控件的方法 12 119-1 使用名称中的变量遍历控件 12 119-2 使用对象类型遍历控件 ...
  • 穆元帅2019-05-15 11:08835从历年看 Access与VFP通过率都很高 几乎没怎么涉及...关键是看你有没有这张NCRE证书PS:2018年全国计算机等级考试考试二级Access考试大纲◆ 基本要求1. 具有数据库系统的基础知识。2. 基...
  • 你已选中了添加链接的内容蓝字关注,加微信NZ9668获资料信息VBA解决方案 系列丛书作者头条百家平台 VBA...代码存储在模块中,在VBA中提供了三种类型的模块:窗体模块、标准模块和类模块。一 各个模块的分工我们在...
  • 计算机二级ACCESS模拟试题为了临场考试不紧张,发挥出自己的真实水平,模拟试题练习很重要。下面是小编分享的计算机二级ACCESS模拟试题,一起来看一下吧。一、选择题1). 如果要显示的记录和字段较多,并且希望可以...
  • 2[简答题]在考生文件夹下有一个数据库文件“samp3.accdb”,里面已经...(1)对窗体进行如下设置:在距窗体左边1厘米、距上边0.6厘米处,依次水平放置3个命令按钮:“显示修改产品表”(名为“bt1”)、“查询”(名为“b...
  • 2、Access是一个面向对象的开发工具3、Access不仅是表对象的集合,还包含查询、窗体、报表、页、宏、模块等共7个对象。(1)表是Access数据库的核心,用于存储数据。其他对象都不能存放数据。实际应用系统中必须包含的...
  • (4)选择新建(N),在弹出的新建查询窗体上选择设计视图,然后在弹出的显示表窗体上选择tWork表,选择查询菜单中的更新查询菜单。然后从tWork选择经费字段,在经费字段的更新到中输入[经费]+2000,运行查询,最后以...
  • 为帮助同学们顺利考过计算机二级考试,yjbys小编为大家分享的是计算机二级考试access模拟试题及答案,欢迎参考复习!基本操作:在考生文件夹下,存在一个数据库文件"samp1.mdb"和一个图像文件"photo.bmp"。在数据库...
  • yjbys小编分享一些计算机二级access数据库程序设计考试试题,希望大家认真阅读!选择题1[单选题] 若窗体Frml中有一个命令按钮Cmdl,则窗体和命令按钮的Click事件过程名分别为()。A.Form Chck()和Commandl_Click()B....
  • 数据库应用系统程序中的菜单具有的作用有(D)。 A)、说明性 B)、选择性 C)、可操作性 D)、以上都是 4).Select必须与(B )配对使用。 A)、End If B)、End Select C)、Case D)、Case Else 5).在VBA中,通常...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 561
精华内容 224
关键字:

vba窗体二级菜单