引用 VBA 中的选项卡控件对象
时 间:2022-03-19 09:10:45
作 者:杨雪 ID:42182 城市:南京
摘 要:可以使用选项卡控件来显示有关单个窗体的多页信息。
正 文:
当您的窗体包含可以分为两个或更多类别的信息时,选项卡控件很有用。
在大多数情况下,选项卡控件的工作方式与窗体上的其他控件一样,可以称为窗体的 Controls 集合的成员。 例如,要引用窗体 Form1 上名为 TabControl1 的选项卡控件,可以使用如下表达式:
Form1.Controls!TabControl1
但是,由于 Controls 集合是 Form 对象的默认集合,因此不需要显式引用 Controls 集合。 也就是说,您可以从表达式中省略引用 Controls 集合,如下所示:
Form1!TabControl1
引用 Pages 集合
一个选项卡控件包含一页或多页。 选项卡控件中的每个页面被引用为选项卡控件的 Pages 集合的成员。 Pages 集合中的每个页面都可以通过 PageIndex 属性设置 (它反映页面在集合中的位置(从 0) 开始)或页面的 Name 属性设置来引用。
TabControl 对象没有默认集合,因此当按 Pages 集合的索引值或 Pages 集合的属性引用 这些 项时,必须显式引用 Pages 集合。
例如,若要通过引用名为 TabControl1 的选项卡控件第一页的 Pages 集合中的索引值来更改该选项卡控件的 Caption 属性的值,可以使用以下语句:
TabControl1.Pages(0).Caption = "First Page"
由于每页都是窗体的 Controls 集合的一个成员,因此可以仅通过 Name 属性来引用某页,而不引用选项卡控件的名称或其 Pages 集合。 例如,要更改 Name 属性设置为 Page1 的页面的 Caption 属性值,请使用如下语句:
Page1.Caption = "First Page"
备 注:
如果用户或代码更改某页的 PageIndex 属性,则对该页索引的引用以及该页在页面顺序中的位置都会更改。 在这种情况下,如果您要保持对页面的绝对引用,请引用该页的 Name 属性。
Pages 集合 有一个属性 Count,该属性返回选项卡控件中的页数。 请注意,此属性不是该选项卡控件本身的属性,而是其 Pages 集合的属性,因此必须显式引用该集合。 例如,要确定 TabControl1 中的页数,请使用如下语句:
TabControl1.Pages.Count
引用并更改当前页面
选项卡控件的默认属性是 Value,它返回一个标识当前页的整数:0 表示第一页,1 表示第二页,等等。 Value 属性仅在 VBA 代码或表达式中可用。 通过在运行时读取 Value 属性,可以确定当前哪一页在最上面。 例如,下面的语句返回 TabControl1 的当前页的值:
TabControl1.Value
备 注:
由于 Value 属性是选项卡控件的默认属性,因此您不必显式引用该属性。 因此,可以省略 .Value 前面的示例。
在运行时设置选项卡控件的 Value 属性可以将焦点更改为指定页,从而使其成为当前页。 例如,下面的语句将焦点移动到 TabControl1 的第三页:
TabControl1 = 2
如果将选项卡控件的 Style 属性设置为"无" (则此选项非常有用 (该控件不会显示选项卡) 并且希望使用窗体上的命令按钮来确定哪个页面具有焦点。 若要使用命令按钮显示页面,请向按钮 的 OnClick 事件添加事件过程,该事件过程将选项卡控件的 Value 属性设置为标识相应页面的整数。
通过将 Value 属性与 Pages 集合一起使用,您可以在运行时设置位于最上面的页面的属性。 例如,可以通过将页面的 Visible 属性设置为 False 来隐藏当前页面 及其 所有 控件。 下面的语句隐藏 TabControl1 的当前页:
TabControl1.Pages(TabControl1).Visible = False
选项卡控件中的每个页面还有一个 PageIndex 属性,该属性通过使用与选项卡控件的 Value 属性相同的编号序列来指定页面在 Pages 集合中的位置:0 表示第一页,1 表示第二页,等等。 设置某页的 PageIndex 属性的值可以更改页面在选项卡控件中的显示顺序。 例如,如果要使名为 Page1 的页面成为第二页,可以使用下面的语句:
Page1.PageIndex = 1
通常,PageIndex 属性是在设计时在页面的属性表中设置的。 您还可以通过右键单击选项卡控件的边框,然后单击快捷菜单上的" 页面 顺序"来设置页面顺序。
引用选项卡控件页上的控件
放在选项卡控件页上的控件是与窗体上所有控件相同的集合的组成部分。 为此,选项卡控件页上的每个控件都必须有一个名称,并且该名称与同一窗体上其他所有控件的名称都不同。 您可以使用引用没有选项卡控件的窗体上的控件的语法来引用选项卡控件页上的控件。
Forms!Employees!HomePhone
由于窗体上的每个控件都有它自己的 Controls 集合,因此您还可以将选项卡控件上的控件作为其 Controls 集合的成员来引用。 例如,下面的代码枚举(列出)了 Employees 窗体的选项卡控件上的所有控件。
Sub ListTabControlControls() Dim tabCtl As TabControl Dim ctlCurrent As Control On Error GoTo ErrorHandler ' 返回对员工表单上选项卡控件的引用. Set tabCtl = Forms!Employees!TabCtl0 ' 列出调试窗口中选项卡控件上的所有控件. For Each ctlCurrent In tabCtl Debug.Print ctlCurrent.Name Next ctlCurrent Set tabCtl = Nothing Set ctlCurrent = Nothing Exit Sub ErrorHandler: MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description End Sub
此外,选项卡控件上的每个页面都有它自己的 Controls 集合。 通过使用页面的 Controls 集合,可以引用每个页面上的控件。 下面的代码枚举了 Employees 窗体上选项卡控件的每个页面上的控件。
Sub ListPageControls() Dim tabCtl As TabControl Dim pagCurrent As Page Dim ctlCurrent As Control Dim intPageNum As Integer On Error GoTo ErrorHandler ' 返回对员工表单上选项卡控件的引用. Set tabCtl = Forms!Employees!TabCtl0 ' 列出调试窗口中选项卡控件上的所有控件. For Each pagCurrent In tabCtl.Pages intPageNum = intPageNum + 1 Debug.Print "Page " & intPageNum & " Controls:" For Each ctlCurrent In pagCurrent.Controls Debug.Print ctlCurrent.Name Next ctlCurrent Debug.Print Next pagCurrent Set tabCtl = Nothing Set ctlCurrent = Nothing Set pagCurrent = Nothing Exit Sub ErrorHandler: MsgBox "Error #: " & Err.Number & vbCrLf & vbCrLf & Err.Description End Sub
Access软件网官方交流QQ群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access判断多条明细的配方或订...(11.30)
- 如何让后台数据库在局域网共享时,且...(11.29)
- 【Access月初月末日期设置方法...(11.29)
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)