“Microsoft 窗体”对象模型一览

Pages (Page) 对象

Tabs 集合 (Tab)


什么是“工具箱”？

“工具箱”标识不同的控件，这些控件可以添加到窗体、框架或页面中。

可以使用很多方法定制“工具箱”，其中包括：

  • 向“工具箱”中添加页面。

  • 将控件从一页面移动到另一页面。

  • 为页面改名。

  • 向“工具箱”中添加其他控件，其中包括 ActiveX 控件。

  • 将定制的控件从窗体复制到“工具箱”中。

  • 例如，“确定”和“取消”按钮是命令按钮的两个特例。如果将“确定”和“取消”模板添加到了“工具箱”，那就可以很快将它们添加到其他窗体中。


显示或隐藏“工具箱”

请查看“视图”菜单中的“工具箱”命令前的图标是否处于凹进状态。如果处于凹进状态，则“工具箱”正显示在屏幕上。否则，“工具箱”正处于隐藏状态。

请执行下列操作之一：

  • 要显示“工具箱”，请确认“工具箱”命令前的图标处于凹进状态。如果没有，请单击“工具箱”命令。

  • 要隐藏“工具箱”，请确认“工具箱”命令前的图标没有处于凹进状态。否则，请单击“工具箱”命令。


改变“工具箱”的大小

  1. 将鼠标指针移到“工具箱”的边角处，指针会变为双向箭头。

  2. 拖动“工具箱”以改变它的大小。


向“工具箱”添加控件

  1. 请在“工具箱”中的任意控件的图标上或任意页面的空白区域上单击鼠标右键。

  2. 单击快捷菜单中的“附加控件”命令。

  3. 从“可以使用的控件”列表中选择新的控件。

  4. 单击“确定”按钮。


向“工具箱”添加定制控件

  1. 在窗体中放置一个控件，并对它进行定制。

    2. 例如，要创建一个“确定”按钮，请在窗体中放置一个“命令按钮”，将其 Caption 属性设置为“确定”，并将 Default 属性设置为“True”。

  2. 选择定制的控件。

  3. 将控件拖动到“工具箱”中。

注意 将控件拖往“工具箱”时，只传送属性的值。为该控件编写的代码不同控件一起传送。必须为“工具箱”中的控件编写新的代码，或将代码由窗体中的控件复制到“工具箱”中的控件。


在窗体中添加控件

可以使用下列方法中的任意一种，由“工具箱”向窗体添加控件。也可以使用这些方法将控件插入到窗体上的框架、TabStrip 或多页中。

  • 单击“工具箱”中的控件，然后在窗体中单击。控件会以默认的大小显示出来。可以拖动该控件以改变其大小。

  • 将控件从“工具箱”拖到窗体。控件会以默认的大小显示出来。

  • 双击“工具箱”中所需的控件，然后每在窗体单击一次，便会创建一个控件。例如，为了创建四个命令按钮。可以双击“工具箱”中的“命令按钮”按钮，然后在窗体中单击四次。


从“工具箱”删除项目

  1. 在“工具箱”中，用鼠标右键单击要删除项目的图标。

  2. 单击快捷菜单中的“删除”命令。

注意 如想删除多个控件，也可单击快捷菜单中的“附加控件”命令，然后清除所有要删除的控件前的复选框。


自定义“工具箱”中的图标

  1. 用鼠标右键单击“工具箱”中的图标。

  2. 单击快捷菜单中的“自定义”命令。

  3. 请执行下列操作之一：
    • 要改变工具提示，请输入工具提示的新文本。

    • 要编辑图标，请选择“编辑图片”命令。然后选取所需的颜色，再单击图像中要使用该颜色的像素。

    • 要指定新的位图，请选择“加载图片”命令。然后选择含有所需位图的文件，该位图将作为图标。如果要加载的图片比图标大，将会产生一个错误。


在“工具箱”中定制工具提示

  1. 选择“工具箱”中的某个控件。

  2. 用鼠标右键单击该控件。

  3. 单击快捷菜单中的“自定义”命令。该定制命令中会包括控件的名称，如“自定义标签”。

  4. 输入工具提示的新文本。

  5. 单击“确定”按钮。


为“工具箱”页面设置工具提示

  1. 选择“工具箱”中的页面。

  2. 用鼠标右键单击该页的标签。

  3. 单击快捷菜单中的“重命名”命令。

  4. 输入工具提示的新文本。

  5. 单击“确定”按钮。


改变“工具箱”页面的名称

  1. 用鼠标右键单击要更改其名称的“工具箱”页面的标签。

  2. 单击快捷菜单中的“重命名”命令。

  3. 在“题注”字段中输入要使用的新名称。

  4. 单击“确定”按钮。


改变“工具箱”页面的顺序

  1. 用鼠标右键单击“工具箱”中任意页面的标签。

  2. 单击快捷菜单中的“移动”命令。

  3. 选择要移动的页面的名称。

  4. 选择“上移”或“下移”按钮，直至将页面在页面列表中移动到所需的位置。

  5. 单击“确定”按钮。


创建新的“工具箱”页面

  1. 用鼠标右键单击“工具箱”中任意页面的标签，新的页面将插在此页面的后面。

  2. 选择“新建页”命令。


删除“工具箱”中的页面

  1. 请用鼠标右键单击要删除的“工具箱”页面。

  2. 选择“删除页”命令。这个页面上所有的控件也会被同时删除。


导入或导出“工具箱”页面

  1. 用鼠标右键单击“工具箱”中任意页面的标签。如果是导入页面，新的页面将插入到此页面的后面。

  2. 请执行下列操作之一：
    • 要导入页面，请选择“导入页”命令。然后选择要导入的页面文件的名称。

    • 要导出页面，请选择“导出页”命令。然后输入用于保存“工具箱”页面的副本的文件名称。执行导出页面操作不会将该页面从“工具箱”中删除。
  3. 单击“确定”按钮。


将项目移到另一个“工具箱”页面

  1. 选择位于“工具箱”中任意页面上的控件。

  2. 将控件拖动到新页面的标签上。将鼠标指针停留在这个标签上，直至该页面出现在“工具箱”前端。

  3. 将控件拖动至页面的主区域。

注意 如果看不到要放置控件的页面，请增加“工具箱”的宽度，以便显示所有页面的标签，然后将控件拖动到相应的页面。


创建从右向左扩展的窗体和对话框

在所有 Microsoft Office 2000 应用程序中都可使用 Visual Basic 编辑器和 Microsoft Forms version 2.0 创建窗体和对话框。Office 2000 为右向左、从左向右和混合文字的使用提供了编辑器和 Microsoft Forms 2.0 的双向扩展。有关标准工具的普通概述，请参阅您所使用的应用程序帮助的“窗体”主题。

Microsoft Forms 2.0 有三个属性常用于向窗体和对话框中添加双向特性。下表中列出了这些属性及其描述。

属性 | 显示 | 将影响
Alignment | 控件 | 控件
TextAlign | 控件 | 控件
RightToLeft | 窗体 | 窗体和控件

以上属性将影响“控件工具箱”中可用的控件（这些控件在下表中列出）。可在编辑器的“属性”窗口中或用 Visual Basic for Applications 语句设置这些属性。

控件 | Alignment | TextAlign | RightToLeft
复选框 | X | X | X
组合框 |  | X | X
框架 |  |  | X
标签 |  | X |
列表框 |  | X | X
多页控件 |  |  | X
选项按钮 | X | X |
TabStrip |  |  | X
文本框 |  | X | X
切换按钮 |  | X |

注意 通常上下文的阅读顺序就是控件中文字的排列顺序。也就是说，如果所显示的文字字符串的起始字符不是从左向右的字符（例如，阿拉伯语文字字符串），则会将其以从右向左的阅读顺序显示，而以从左向右字符开头的文字字符串则将以从左向右的阅读顺序显示。


什么是控件提示？

控件提示是描述控件、页面或标签的简洁短句。 当鼠标指针在一个控件上停留片刻，而不单击时，就会出现控件提示。控件提示和工具提示非常相似。不同之处是，Microsoft 窗体为开发人员在设计时提供工具提示，开发人员为最终用户在运行时提供控件提示。

如果为多页或 TabStrip 指定了控件提示，那么在多页或 TabStrip 中的单独的 Page 或 Tab 对象的控件提示就不再显示了。


为控件指定控件提示

  1. 选定所需控件。

  2. 选择“属性”窗口中的 ControlTipText 属性。

    也可以通过编写代码来设置 ControlTipText 属性的值。

  3. 输入作为控件提示的字符串。

提示 若要给页或标签指定控件提示，请使用页或标签的快捷菜单中的“重命名”命令。


为页或标签指定控件提示

  1. 选择单独的页或标签。

    请确保选择的是页或标签，而不是相应的多页或 TabStrip。在选定了一个页或标签后，在它的题注周围会出现一个矩形。

  2. 用鼠标右键单击选定的页或标签。

  3. 单击快捷菜单中的“重命名”命令。

  4. 在“控件提示文字”字段中键入作为控件提示的字符串。

  5. 单击“确定”按钮。

提示 若要给多页或 TabStrip 指定控件提示，请使用 ControlTipText 属性。


什么是工具提示？

工具提示是一个简短的描述，通常只是几个单词，当鼠标指针在控件或是用户界面的其他部分上停留片刻，而不单击时，就会出现工具提示。可以为控件和“工具箱”定制工具提示。

一个从窗体复制到“工具箱”的新控件，工具提示的默认值是“New”加上控件类型。例如，对于一个定制的命令按钮（如“确定”），它默认的工具提示是“New CommandButton”。如果控件没有关联的工具提示，默认值就是“Unknown”。

注意 工具提示是 Microsoft 窗体在设计时提供给窗体开发人员的信息。每个控件都有 ControlTipText 属性，允许窗体的开发人员在应用程序运行时，提供给最终用户“工具提示”。


显示或隐藏工具提示

  1. 单击“工具”菜单中的“选项”命令

  2. 选择“通用”选项卡。

  3. 请执行下列操作之一：
    • 要显示工具提示，请选中“显示工具提示”复选框。

    • 要隐藏工具提示，请清除“显示工具提示”复选框。


什么是快捷菜单？

快捷菜单是用右键单击一个对象时出现的菜单。在 Microsoft 窗体中，下列对象具有快捷菜单：

  • “工具箱”、“工具箱”中的每个页面、“工具箱”中每页上的每一项目。

  • 窗体中的单个控件。

  • 控件组（由“生成组”命令创建的组)。

  • 容器（例如 UserForm）。

  • 一个多页中的每个 Page 对象。

  • 一个 TabStrip 中的每个 Tab 对象。

  • 不在一个组中的多个控件，

快捷菜单中的命令根据您所选择的对象不同而不同。例如，如果您选择了不在一组中的多个控件，快捷菜单将包含“生成组”命令；但“工具箱”菜单不包含此命令。

要显示一个控件或容器的快捷菜单，请用鼠标右键单击该对象。

有关显示多页或页面快捷菜单的详细信息，请单击 [image] 。

有关显示 TabStrip 或标签快捷菜单的详细信息，请单击 [image] 。


显示多页或页面的快捷菜单

  1. 确认窗体未在运行。

  2. 请执行下列操作之一：
    • 要显示单个页面的快捷菜单，请用鼠标右键单击相应页面的题注。

    • 要显示多页的快捷菜单，请用鼠标右键单击控件中除去页面题注之外的任意位置。


显示 TabStrip 或标签的快捷菜单

  1. 确认该窗体未在运行。

  2. 请执行下列操作之一：
    • 要显示单个标签的快捷菜单，选择相应的标签。

    • 选中标签后，在其题注的四周会出现一个虚线矩形。

      用鼠标右键单击被选中的题注。

    • 要显示 TabStrip 控件的快捷菜单，请用鼠标右键单击控件中除去标签标题之外的任意位置。


显示组的快捷菜单

  1. 选择所需的组。

  2. 用鼠标右键单击包围该组的矩形内的任意位置。

提示 如果您不想使用快捷菜单中的任何命令，则可以关闭快捷菜单，方法是：单击该组中（而不是快捷菜单中）的任意位置。


Microsoft 窗体中的撤消和恢复操作

Microsoft 窗体支持多次“撤消”和“恢复”命令。这就意味着您可以撤消一系列操作，而不仅只是单项操作。

Ctrl+Z 组合键是“撤消”命令的快捷键，Ctrl+Y 组合键是“重复”命令的快捷键。

您不能撤消或重复设置叠放次序的命令（例如“置于底层”或“置于顶层”）。例如，如果您选择了一个对象并单击快捷菜单中的“下移一层”命令，您将不能再撤消或恢复此操作。


为控件指定位图

在“属性”窗口中：

  1. 选择 Picture 属性。

  2. 在“加载图片”对话框中输入所需图片的名称和位置。

如果该图片比控件大，“Microsoft 窗体”会缩小该图片，使其与控件吻合。无论您是通过“属性”窗口还是通过编写代码指定图片，都会进行这种调整。PictureAlignment 属性决定了如何在控件中对齐图片。


在控件上对齐图片的方法

在控件中对齐图片的方法

Picture 属性给控件指定位图或其他图片。给控件指定图片后，可以用下列任意方法，在控件中对齐图片：

  • 使用 PictureAlignment 属性将图像控件中的图片居中或者按照图像控件的顶角分别对齐该图片相应的顶角。

  • 使用 PictureSizeMode 属性在图像控件中剪裁、伸展或缩放图片。伸展可能会使图片变形，但是缩放不会。

  • 使用 PictureTiling 属性可以在图像控件中显示图片的多个副本。


删除控件的位图

在“属性”窗口中删除控件位图的方法：

  1. 突出显示 Picture 属性的值（即单词“Bitmap”）。

  2. 按下 Delete 键。

通过编写代码删除控件位图的方法：

  • 输入此语句：Object.Picture = LoadPicture("")


可对图像控件执行的操作

图像控件本身并不是一幅图片，在图像控件中包含了保存在独立文件中的图片。不能用图像控件的属性编辑该图片，但可用图像控件的属性指定图片出现在图像控件中的方式。

图像控件的一个有趣的应用是：可以用其作为应用程序的背景图片。方法是，先将图像控件的大小设成与窗体的大小相同。然后再将其他控件放置到该背景的上面。


有关设置主控件的提示

当选取多个控件时，可以通过下列方式之一设置主控件：

  • Shift+单击：主控件是用 Shift+单击方法选中的第一个控件。

  • Ctrl+单击：主控件是用 Ctrl+单击方法选中的最后一个控件。

  • “工具箱”中“选定对象”指针：当开始在需选取的控件上画出矩形时，主控件就是离鼠标指针最近的控件。

如果在选中的控件上按住 Ctrl 键并单击两次，该控件将成为主控件。


Microsoft 窗体的透明效果

Microsoft 窗体支持两种区域的透明效果：某些控件的背景和某些控件所用的位图。

BackStyle 属性决定一个控件是否透明。 透明的控件允许您观察窗体上隐藏在该控件后的内容。如果您的窗体中有装饰性的背景，并且您想尽量减少隐藏在控件后面的背景，就可以使用透明效果。有关使一个控件透明的详细信息，请单击 [image] 。

Microsoft 窗体的许多控件中可显示位图。有些控件支持透明的位图，也就是说位图中的一种或几种背景颜色是透明的。控件任何属性都不能控制位图的透明效果，它由图像左下角像素的颜色来控制的。Microsoft 窗体并不提供编辑位图并使其透明的方法，因此您必须使用图片编辑器来实现这种效果。

在 Microsoft 窗体中，位图在下列控件中总是透明的：

  • 复选框

  • 命令按钮

  • 标签

  • 选项按钮

  • 开关按钮

透明的图片有时会显得模糊不清。如果您不希望出现此现象，可在支持不透明图像的控件中显示该图片。

如果您在不支持透明位图的控件中使用一个透明的位图，该位图也能正确显示出来，但您不能观察到隐藏在其后的内容。在 Microsoft 窗体中，以下控件不支持透明的位图：

  • 窗体窗口 (UserForm)

  • 框架

  • 图像

  • 多页


建立一个透明控件

建立一个透明的控件

  1. 将基本控件放置到窗体上。

  2. 查看控件的属性。

  3. 将 BackStyle 属性设置为“0 - fmBackStyleTransparent”。

  4. 如果控件支持 BorderStyle 属性，将其设置为“0 - fmBorderStyleNone”。

注意 当您使一个控件透明时，背景色将不会显示出来，因此您可以不理会 BackColor 属性。另外，将控件设置为透明时，其 BackColor 属性的设置不变。


什么是题注？

题注是一个说明性的文本，该文本或直接出现在控件上，或出现在控件的周围。下列控件可以有题注：复选框、命令按钮、框架、标签、选项按钮和开关按钮。作为多页和 TabStrip 的一部分的 Page 和 Tab 对象，也有题注。


指定题注

给复选框、命令按钮、框架、标签、选项按钮或切换按钮指定题注的方法：

  1. 显示控件的“属性”窗口。

  2. 选择 Caption 属性。

  3. 输入要作为题注的文本。

给页或标签指定题注的方法：

  1. 选择含有页或标签的多页或 TabStrip。

  2. 选择单独的页或标签。选定了页或标签之后，围绕其的题注会出现一个矩形。

  3. 用鼠标右键单击选定的多页或 TabStrip。

  4. 单击快捷菜单中的“重命名”命令。

  5. 在“题注”字段中输入要作为题注的文本。

  6. 单击“确定”按钮。


什么是多页？

多页是一个控件，包含由一个或多个页面组成的集合。

多页中的每个页面都是一个窗体，该窗体含有自己的控件，并且可以有唯一的布局。一般情况下，多页中的页面都有标签，以便让用户选择单个页面。

默认情况下，一个多页包含两个页面，称作 Page1 和 Page2。其中的每个页面都是一个 Page 对象，合在一起就表示多页的 Pages 集合。如果继续添加页面，它们都将成为同一个 Pages 集合中的一个部分。


什么是 TabStrip？

TabStrip 是一个控件，它包含由一个或多个标签组成的集合。

TabStrip 的每一个标签都是一个可供选择的单独的对象。显而易见，TabStrip 也包括有一个客户区，由 TabStrip 中的所有标签共享。

默认情况下，一个 TabStrip 包含两个页面，称作 Tab1 和 Tab2。其中的每个页面都是一个 Tab 对象，合在一起就表示是 TabStrip 的 Tabs 集合。如果再继续添加页面，它们都是同一个 Tabs 集合中的一个部分。


应该使用多页还是 TabStrip？

如果使用的是单一数据布局，那么可以选择 TabStrip，并将每个数据集映射到它自己的标签中。如果需要使用多种数据布局，则可以选择多页，并将每个布局指定到它自己的页面中。

与多页的页面不同，TabStrip 的客户区不是一个独立的窗体，而只是含有该 TabStrip 的窗体的一个部分。TabStrip 的边框定义了窗体中与标签关联的区域。向 TabStrip 的客户区中放置控件，实际上是向含有 TabStrip 的窗体添加控件。


为 Page 或 Tab 指定加速键

  1. 在设计方式，选择一个单独的 Page 或 Tab。一定要确保选择的是 Page 或 Tab，而不是有关联的多页或 TabStrip。当选定一个 Page 或 Tab 后，围绕这个 Page 或 Tab 的主题出现一个矩形。

  2. 在选定的 Page 或 Tab 上单击右键。

  3. 单击快捷菜单中的“重命名”命令。

  4. 在“重命名”对话框，输入一个在 Accelerator Key 字段中的字符。

提示 选用该控件的主题中的一个字符。注意该控件主题中，选定的那个字符会有下划线。


改变多页或 TabStrip 中页面的顺序

  1. 选择多页或 TabStrip 中任意页面。

  2. 用鼠标右键单击该页面的题注。

  3. 单击快捷菜单中的“移动”命令。

  4. 在“页面顺序”对话框中，选择要移动的页面。

  5. 选择“上移”或“下移”按钮，改变页面的位置。

  6. 当完成全部所需的更改后，单击“确定”按钮。

注意 也可以在“属性”窗口中，使用 Index 属性改变页面的顺序。第一个页面的索引是 0；第二个页面的索引是 1；依此类推。


有关使用文本框的提示

文本框是一个灵活的控件，受下列属性的影响：Text、MultiLine、WordWrap 和 AutoSize。

Text 包含在文本框中显示的文本。

MultiLine 控制文本框是单行还是多行显示文本。换行字符用于标识在何处结束一行并开始新的一行。如果 MultiLine 的值为 False，则文本将被截断，而不会换行。

如果文本的长度比文本框的宽度长，WordWrap 允许文本框根据其宽度自动换行。

如果不使用 WordWrap，当文本框在文本中遇到换行字符时，开始一个新行。如果关闭 WordWrap，TextBox中可以有不能完全适合其宽度的文本行。文本框根据该宽度，显示宽度以内的文本部分，截断宽度以外的那文本部分。只有当 MultiLine 为 True 时，WordWrap 才起作用。

AutoSize 控制是否调节文本框的大小，以便显示所有文本。当文本框使用 AutoSize 时，文本框的宽度按照文本框中的文本量以及显示该文本的字体大小收缩或扩大。

AutoSize 适用于下列状况：

  • 显示一行或多行的题注。

  • 显示单行文本框的内容。

  • 显示多行文本框的内容，该内容对用户是只读的。

注意 不要对使用了 MultiLine 和 WordWrap 属性的空文本框使用 AutoSize 属性。如果同时使用了这些属性，则在往文本框中输入文本时，文本框自动调整为窄长的文本框，一个字符高，长度和文本长度一样。


列表框的样式

列表框有两种可供选择的外观样式。这两种样式为用户提供了不同的方法来选择列表中的项目。

如果是 Plain 样式，每个项目位于独立的行中；突出显示一行或多行可以选中项目。

如果是 Option 样式，将在每行开头显示一个选项按钮或复选框。此时，单击选项按钮或复选框，就可以选中一个项目。只有当 MultiSelect 属性为 True 时，才会出现复选框。


创建标准列表框

  1. 选择“属性”窗口中的 ListStyle 属性。

  2. 单击下拉箭头可显示一个可用样式的列表。

  3. 从列表中选取“0 - fmListStylePlain”。


创建带有选项按钮或复选框的列表框

  1. 选择“属性”窗口中的 ListStyle 属性。

  2. 单击下拉箭头可显示一个可用样式的列表。

  3. 从列表中选取“1 - fmListStyleOption”。

当 ListStyle 属性设置为“1 - fmListStyleOption”时，由 MultiSelect 属性决定在列表框中显示的是复选框还是选项按钮。当 MultiSelect 为“0 - fmMultiSelectSingle”时，选项按钮出现在列表框中。当 MultiSelect 为“1 - fmMultiSelectMulti”或“2 - fmMultiSelectExtended”时，复选框出现在列表框中。


在列表框或组合框中放置数据的方法

在单列列表框或组合框中，AddItem 方法提供了将单个条目添加至该列表的有效技术。在一个多列列表框或组合框中，List 和 Column 属性提供了另一种技术，使您可以从二维数组加载列表。


可对多列列表框或组合框执行的操作

要控制多列列表框或组合框的宽度，可在 ColumnWidths 属性中，以磅数为单位指定各列的宽度。如需在显示时隐藏某列信息，可将相应的列宽指定为 0。

如果只希望显示列表框或组合框中的一列，并户隐藏所有其他列，则可将其他列的 ColumnWidths 设为 0，将待显示列的 ColumnWidths 属性设为默认值并使用 TextColumn 属性来标识该列。当用户选定一行时，控件的 Text 属性设为由 TextColumn 属性标识的列的值。在组合框中，系统在控件文本框部分显示由 TextColumn 属性所指定的列。

类似地，您可以通过在 BoundColumn 属性中指定列号来控制当用户做出选择时，使用哪一列的数据。


使用 List 或 Column 属性将条目添至列表

  1. 建立一个多列列表框或组合框。

  2. 建立一个二维数组，其中包含有要添加到该列表的条目。

  3. 设置列表框或组合框的 ColumnCount 属性，以与此列表中的项目数相匹配。

  4. 请执行下列操作之一：
    • 将数组作为 List 属性的值。列表框的内容将与此数组的内容准确匹配。

    • 将数组作为 Column 属性的值。Column 转置行和列，使列表框的每行与该数组的对应列相匹配。


与列表条目匹配的方法

Microsoft 窗体提供了三种方法，用来将用户输入的值与列表框或组合框的列表中的条目进行匹配：

  • 不匹配 不将用户键入的内容与列表中的条目进行任何匹配。

  • 首字母匹配 将最新键入的字母与列表中每个条目的第一字母进行比较，列表中第一个匹配的条目被选中。

  • 完全匹配 比较用户的输入的内容，并力图从列表中找出能准确匹配的条目。

匹配功能在两秒钟后被复位（使用远东设置是为六秒）。例如，假设有一个 50 个州的列表，如果您快速键入“CO”，将查找到“Colorado”；但是如果您慢速键入“CO”，您将查找到“Ohio”，因为在输入两个字母之间的这段时间内，匹配功能已复位。

如果选择“完全匹配”的匹配方式，首先对列表项目按字母排序是个好方法（可用 TextColumn 属性来完成排序）。如果该列表未按字母排序，匹配将不能正确进行。例如，如果列表中包含 Alabama，Louisiana 和 Alaska 这样的顺序的条目，如果用户键入“ala”，则“Alabama”将被认为是一个完全匹配。事实上这个结果是不准确的，因为在该列表中有两个输入项都可能匹配。而按字母排序就可以消除这种不准确性。


使用 Z-顺序布置控件

要将一个控件放在 Z-顺序的最前面或最后面：

  1. 选中需要重新定位的控件。

  2. 选择“格式”菜单中的“顺序”命令。

  3. 在多级菜单中选择“移至顶层”或“移至底层”命令。

要将控件在 z-顺序中的位置向上或向下移动一层：

  1. 选中需要重新定位的控件。

  2. 单击“格式”菜单中的“顺序”命令。

  3. 在多级菜单中选择“上移一层”或“下移一层”命令。

注意 不能撤消或重复调整层次的命令（如“移至底层”或“移至顶层”命令）。例如，在选择了一个对象并且单击了快捷菜单中“移至底层”命令之后，不能撤消或重复该操作。

您可以通过“移至底层”、“上移一层”、“移至顶层”和“下移一层”菜单选项来改变一个控件相对于其他控件的 z-顺序。如果该窗体包含列表框、框架或多页控件，这些控件将自动移至尽可能靠近堆栈顶部的位置。例如，如果对列表框、框架或多页应用“下移一层”命令，则仅会将该控件移至其他列表框、框架或多页控件的下面，而不会移到堆栈中其他形式的控件下面。类似地，将“上移一层”命令应用于除了列表框、框架或多页之外的其他控件时，会将该控件移至更靠近堆栈顶部的位置，但不会将该控件移至堆栈中任何列表框、框架或多页的上面。

显然，这就意味着如果列表框、框架或多页与其他任何 Microsoft 窗体控件处于一个窗体的相同位置，则列表框、框架或多页将总是出现在其他控件的顶部。如果一个列表框、框架或多页与另一个列表框、框架或多页处于同一位置，则由控件的 Z-顺序来确定哪个控件出现在上面。


激活控件和选择控件

所有控件都具有激活状态和选中状态。当一个控件被激活时，意味着您正在使用该控件的内容；当一个控件被选中时，意味着您正在使用控件本身。

将控件放置在窗体中时，大多数控件会被自动选中。在设计模式下，当控件被选择时尺寸控点出现在控件的边框周围。如果您已撤消对该控件的选择，您可以通过再次单击控件而重新选中它。

单击一个被选中的控件可以使其进入激活状态。在此状态下，您可以直接编辑控件的题注。

在选中和激活两种状态下，您可以使用 Del 键、Ctrl+X 组合键和 Ctrl+C 组合键作为删除、剪切和复制命令所对应的快捷键。在选择状态下，这些命令会出现在快捷菜单上，并以控件本身作为操作对象。在激活状态下，这些命令将以控件中被选定的文本作为操作对象；如果没有文本被选定，这些命令无效。这些命令不会出现在激活控件的快捷菜单上。


改变窗体的大小

在设计时间改变窗体大小的方法：

  • 拖动窗体的尺寸控点，直到窗体成为需要的大小。

在运行时间改变窗体大小的方法：

  • 将窗体的 Height 和 Width 属性设置为所需的值。


改变窗体的位置

通过用户界面改变窗体位置的方法：

  • 拖动标题栏，将窗体移到所需的位置。

在设计时间改变窗体位置的方法：

  • 将窗体的 Left 和 Top 属性设置为适当的值。可以通过“属性”窗口或编写代码来设置这些属性。


显示或隐藏网格

  1. 单击“工具”菜单中的“选项”命令。

  2. 选择“通用”选项卡。

  3. 请执行下列操作之一：
    • 要显示网格，请选中“显示网格”复选框。

    • 要隐藏网格，请清除“显示网格”复选框。
  4. 单击“确定”按钮。


选择网格尺寸

  1. 单击“工具”菜单中的“选项”命令。

  2. 选择“选项”对话框中的“通用”选项卡。

  3. 在“窗体网格设置”组中指定所需的每个网格块的大小。指定较小数字，则出现较小的网格块。

提示 如果要在应用程序中用 Arrange Buttons 命令来定位命令按钮，那么可以尝试采用较小的网格设置。这样就可将按钮定位在更靠近窗体边缘的位置。


按网格调整大小

  1. 选中某个控件。

  2. 单击“格式”菜单中的“调至网格”命令。

    “Microsoft 窗体”将调整所选控件的大小，使其每个角都与一个网格点对齐。


按内容调整大小

  1. 选中某个控件。

  2. 单击“格式”菜单中的“正好容纳”命令。

    “Microsoft 窗体”将设置控件的大小，使其正好能够显示它的图片及指定给 Caption 或 Text 属性的所有文本。


改变组内全部控件的大小

  1. 选中一个组。

    该组周围会出现一个具有尺寸控点的矩形，表明该组已被选中。

  2. 单击任意尺寸控点并且拖动它，以改变矩形的大小。

  3. 释放鼠标按键。

    组内每个控件的大小都将按照该组外围矩形大小的改变方式，成比例地改变。


使控件的尺寸相同

  1. 选中所有需要调为相同尺寸的控件。

  2. 选择主控件。

  3. 单击“格式”菜单中的“统一尺寸”命令。

  4. 在多级菜单中，选择下列命令之一：
    • “宽度相同”：使所有选中控件的宽度与主控件的宽度相同。

    • “高度相同”：使所有选中控件的高度与主控件的高度相同。

    • “两者都相同”：使所有选中的控件与主控件具有相同的宽度和高度。


有关选择多个控件的提示

您可以用三种方法选择多个控件：:

  • Shift+单击：在被选中的控件周围，Microsoft 窗体建立一个不可见的选择矩形，并显示矩形中的所有控件的尺寸控点。

  • Ctrl+单击：只显示选中控件的尺寸控点，而不会显示矩形内的其他控件的尺寸控点。用这种方法，有时也会选中邻近或紧挨着的其他控件，这时，就可以使用下面介绍的“选定对象”指针。

  • “工具箱”中的“选定对象”指针：画一个矩形覆盖您想选中的控件。所有落在其中或仅仅接触到矩形的控件都会被选中。

当选择多个控件时，选中的控件之一将成为其他选中控件的参考，称之为主控件。


对齐控件

  1. 选中需要对齐的控件。

  2. 选择主控件。

  3. 单击“格式”菜单中的“对齐”命令。

  4. 在多级菜单中，选择下列命令之一，将每个所选控件的指定部位与主控件的同一部位对齐：
    • “左对齐”：按左侧边缘对齐。

    • “居中对齐”：对齐每个控件的垂直中心线。这意味着，每个所选控件的中垂线都与主控件的中垂线重合。

    • “右对齐”：按右侧边缘对齐。

    • “顶端对齐”：按顶部边缘对齐。

    • “中间对齐”：对齐每个控件的水平中心线。这意味着，通过每个所选控件中心的水平线都与通过主控件中心的水平线重合。

    • “底端对齐”：按底部边缘对齐。

    • “对齐到网格”：将每个所选控件的左上角与最近的网格点对齐。请注意，这个选项不是以主控件的位置为基准的。

注意 菜单中的每个命令前面都有一个小图片，说明控件将如何对齐。


对齐控件中的文本

  1. 选择“属性”窗口中的 TextAlign 属性。

  2. 单击此属性值后的下拉箭头，可显示一个可供选择的选项列表。

  3. 选择以下取值之一：
    • 1 - fmTextAlignLeft：将文本与控件的左边对齐。

    • 3 - fmTextAlignRight：将文本与控件的右边对齐。

    • 2 - fmTextAlignCenter：将文本按照控件长度居中对齐。

组合框、标签和文本框具有 TextAlign 属性。


使控件在窗体内居中

  1. 选择需要居中的控件或群组。

  2. 单击“格式”菜单中的“窗体内居中”命令。

  3. 从多级菜单中选取下列命令之一：
    • “水平对齐”

    • “垂直对齐”


调整控件之间的水平和垂直间隔

  1. 选中需要调整间隔的控件。

  2. 单击“格式”菜单中的“水平间距”或“垂直间距”命令。

  3. 请选择多级菜单中的下列命令之一：
    • “相同”：使控件之间的水平和垂直间隔相同。水平和垂直间隔的大小，将随着显示控件的有效区域及所有控件的总宽度而变化。

    • “递增”：将控件之间的间隔增大一个网格块。

    • “递减”：将控件之间的间隔减小一个网格块。

    • “移除”：删除控件之间的间隔。控件不会重叠起来，而是互相紧靠在一起。


排列按钮

  1. 选择所有需要排列的命令按钮控件。

  2. 单击“格式”菜单中的“排列按钮”命令。

  3. 在多级菜单中，选择下列命令之一：
    • “底端”：从窗体的左下角开始，将按钮排成一行，并将所有按钮的底边对齐。

    • “居右”：从窗体的右上角开始，将按钮排成一列，并将所有按钮的右边对齐。

排列好按钮之后，可以使用“格式”菜单中的“水平间距”或“垂直间距”调整按钮之间的间隔。

提示 在使用此命令将按钮置于靠近窗体底部或右侧的位置之前，可以先选择较小的网格大小。按钮就位后再改变网格大小，不会改变按钮的位置。


建立选项组的方法

默认情况下，在一个容器（例如窗体、多页或框架）中的所有 OptionButton 控件都是同一个选项组的组成部分。这就意味着选中了其中一个按钮后，此窗体中的其余选项按钮会被自动设置为 False。

如果您需要在窗体中使用多个选项组，有两种方法可以用于创建附加的组：

  • 使用 GroupName 属性指定相互关联按钮。

  • 将相互关联的按钮放置在窗体上的一个框架中。

我们建议您使用第一种方法而不要使用第二种方法，因为前者减少了应用程序中的控件数量，这样也就减少了应用程序对磁盘空间的要求，从而可以改善应用程序的性能。

注意 TabStrip 不是一个容器。在 TabStrip 中的选项按钮包含在窗体的选项组中。您可以使用 GroupName 来将同一个 TabStrip 上按钮设置为选项组。


使用 GroupName 属性建立选项组

  1. 将全部所需的选项按钮控件放置在窗体中。请注意，在多页或框架中的选项按钮将自动形成一个选项组。

  2. 为您要建立的每个组指定按钮。

  3. 为每个控件的 Name 属性输入一个值。

  4. 将组内每个按钮的 GroupName 属性设置为相同数值。


可对控件群组执行的操作

群组是窗体中可将其看作一个单元的两个或两个以上的控件。群组可包含窗体中的任意控件。控件属于一个群组后，既可以处理整个群组，也可以选择单个对象进行操作。

Microsoft 窗体提供了很多使用群组或群组控件的方式。选中一个群组后，可执行下列任何操作：

  • 同时调整群组中所有控件的大小。详细内容，请单击 [image] 。

  • 解散群组，从而使每个控件都独立于其他的控件。详细内容，请单击 [image] 。

  • 显示群组的快捷菜单，通过该菜单可以快速访问有关群组的命令。详细内容，请单击 [image] 。

  • 不解散群组的情况下，选择群组内的单个控件，这样就可以改变该控件的属性设置，而不影响群组中的其它控件。详细内容，请单击 [image] 。


建立控件组

建立一个控件组

  1. 在窗体中选择您要包括在该组内的每个控件。

  2. 单击“格式”菜单中的“生成组”命令。


解散控件组

  1. 选择一个组

  2. 单击“格式”菜单中的“取消组”命令。


选择群组内的控件

  1. 选择所需的群组。

  2. 选择该群组内的单个控件。包围该组的尺寸控点将变为白色，同时选中控件的周围也会出现白色的尺寸控点。

    您可以改变所选控件的属性值。您所做的任何更改都将仅影响被选中的控件。

  3. 当您结束对所选控件的处理之后，可单击组内除被选择控件以外的任意位置。该组会继续处于选中状态。

    您可以选择组内的另一个控件或者继续完成其他任务。


自定义帮助文件

应用程序的开发人员可以使用自定义的帮助文件，提供如何使用窗体应用程序的信息。

可以使用创建 Windows 帮助文件的产品或工具来创建自定义的帮助文件。

可以将自定义帮助文件中的特定主题与应用程序中的相应控件关联起来。当这个应用程序运行时，用户可以通过选择控件，然后按 F1 键来查看帮助主题。


为控件指定一个定制的帮助主题

在此过程中，假定已经建立了一个自定义的帮助文件，并且已与工程相关联。将帮助文件与工程建立关联的过程由工程环境决定。

  1. 选定一个已经为其编写好自定义帮助文件的控件。

  2. 在“属性”窗口中，选择 HelpContextID 属性。

  3. 输入自定义帮助文件中相应主题的上下文 ID 。


Microsoft 窗体的对象模型

Microsoft 窗体对象模型包括以下对象类型：

  • 控件

  • 集合

  • 集合中的对象

Microsoft 窗体对象模型的每个元素都具有一系列的属性、事件和方法。您可以利用方法使应用程序按您的要求进行工作。

Microsoft 窗体具有三种集合：

Controls 集合：包括窗体、框架或页面中的全部控件。

Pages 集合：包括多页中的全部 Page 对象。每个多页都有自己的 Pages 集合。

Tabs 集合：包括 TabStrip 中的全部 Tab 对象。每个 TabStrip 都有自己的 Tabs 集合。


Microsoft 窗体的 ByVal 引用

Microsoft 窗体中的 ByVal 关键字表明将首选参数作为数值传递。这是 Visual Basic 中 ByVal 的标准含义。但是，在 Microsoft 窗体中可以将 ByVal 用于 ReturnBoolean，ReturnEffect，ReturnInteger，或 ReturnString 对象。当您如此使用时，传递的数值不是简单的数据类型；而是一个指向对象的指针。

当用于以上对象时，ByVal 将引用对象本身而非传递参数的方法。上文列出的每个对象都具有可以设置的 Value 属性。您还可以将函此值传递进或传递出函数。因为您能够改变对象成员的值，所以即使该事件语法说明此参数是 ByVal，事件仍然产生与 ByRef 一致的效果。

给与 ReturnBoolean，ReturnEffect，ReturnInteger 或 ReturnString 相关的参数赋值，与给任何其他参数赋值没有区别。例如，如果事件语法指明一个用于 ReturnBoolean 对象的 Cancel 参数，语句 Cancel=True 仍然是合法的， 就像对于其他数据类型一样。


DataObject 和“剪贴板”的区别

DataObject 和“剪贴板”都提供了将数据从一处移到另一处的方法。作为应用程序开发人员，无论是使用 DataObject 还是使用“剪贴板”，都要记住下列几项要点：

  • 只要各项数据具有不同的数据格式，DataObject 和“剪贴板”就都可以同时保存多项数据。但是如果已经有数据使用了要保存数据的格式，则保存这个新数据，并丢弃原来的数据。

  • “剪贴板”支持图片格式和文本格式。而 DataObject 目前只支持文本格式。

  • 只有应用程序运行时，DataObject 才存在；而剪贴板则是始终运行的（与正在运行的操作系统同时存在）。这意味着，将数据放到剪贴板后，如果关闭了应用程序，剪贴板上的数据不会丢失。DataObject 则没有这个功能。如果关闭应用程序，该应用程序放在 DataObject 上的数据就会丢失。

  • DataObject 是一个标准的 OLE 对象，而剪贴板不是。这意味着，剪贴板支持标准的移动操作（复制、剪切和粘贴），但不支持拖放操作。如果需要应用程序支持拖放操作，就必须使用 DataObject。

提示 当用 SetText 方法将数据移动到剪贴板或 DataObject 时，可定义自己的数据格式名称。这样便于区分是应用程序移动的文本还是用户移动的文本。


改变控件外观的方法

“Microsoft 窗体”包含一些属性，可用来定义应用程序中控件的外观：

  • ForeColor

  • BackColor，BackStyle

  • BorderColor，BorderStyle

  • SpecialEffect

ForeColor 确定前景色。前景色可用于与控件关联的任何文本，例如题注或控件的内容。

BackColor 和 BackStyle 用于控件的背景。背景是控件边框内的区域（如控件中环绕文本的区域），而不是控件的边框。BackColor 确定背景色。BackStyle 确定背景是否透明。如果应用程序的设计中使用图片作为主要背景，并想看到控件后的图片时，可将控件背景设置为透明。

BorderColor、BorderStyle 和 SpecialEffect 用于控件的边框。可以使用BorderStyle 或 SpecialEffect 选择边框的类型。这两个属性不能同时使用。当指定其中一个属性的值时，系统将另一个属性设置为 None。SpecialEffect 允许在几种边框样式中选取一种，但所选边框只能使用系统颜色。BorderStyle 只支持一种边框样式，但允许使用由 BorderColor 指定的任意有效颜色。BorderColor 用于指定控件边框的颜色，但只有使用 BorderStyle 创建边框时该颜色才有效。


保护敏感信息的几种方法

很多应用程序都会包含有只有特定用户才能够访问的数据。以下是一些有关在 Microsoft 窗体中保护敏感信息的建议：

  • 可以编写代码使未经授权的用户不能看到控件（及其数据）。Visible 属性可以使一个控件可见或不可见。有关 Visible 的详细内容，请单击 [image] 。

  • 可以编写这样的代码：当未经授权的用户运行这个应用程序时，将控件的前景和背景设置为相同颜色。这样，未经授权的用户便无法看到这些信息。用 ForeColor 和 BackColor 属性来确定前景色和背景色。有关 ForeColor 的详细内容，请单击 [image] 。有关 BackColor 的详细内容，请单击 [image] 。

  • 当未经授权的用户运行这个应用程序时，使控件无效。Enabled 属性可以决定什么时候使控件无效。有关 Enabled 的详细内容，请单击 [image] 。

  • 访问这个应用程序或特定控件时，要求输入口令。在用户键入字符时可以使用占位符。PasswordChar 属性用于定义占位符。有关 PasswordChar 的详细内容，请单击 [image] .

注意 使用上述的口令或其它技术可以提高应用程序的安全性，但不能完全防止对数据的未经授权的访问。


使控件按照数据自动调整大小

在“属性”窗口中，将 AutoSize 属性设为“True”


指定加速键

  1. 在设计方式下，选择窗体中的某个控件。

  2. 选择“属性”窗口中的 Accelerator 属性。

  3. 输入单个字符作为 Accelerator 的值。

提示 可以选用该控件的题注中的一个字符作为加速键。请注意，在该控件的题注中，选用的那个字符会有下划线。


使用“选项卡顺序”对话框中设置 Tab 键顺序

  1. 确保没有选择任何控件。

  2. 在窗体上单击鼠标右键，注意不要在控件上单击。

  3. 选择快捷菜单中的“Tab 键顺序”命令。

  4. 选择要重新确定其 Tab 键顺序的控件的名称。

  5. 选择“上移”或“下移”命令。直到控件名称在 Tab 键顺序中位于所需的位置。


使用 TabIndex 属性设置 Tab 键的顺序

  1. 标识需要用于窗体的 Tab 键顺序。

    在 Tab 键顺序中，第一个控件的 Tab 索引是 0；第二个控件的 Tab 索引是 1；依此类推。

  2. 选中 Tab 键顺序中的一个控件。

  3. 选择“属性”窗口中的 TabIndex 属性。

  4. 输入相应的数字，以标识该控件在 Tab 键顺序中的位置。


AddControl 事件

当将控件插入到窗体、框架或多页控件中的一个页面中时，此事件发生。

语法

对于框架
Private Sub object_AddControl( )

对于多页
Private Sub object_AddControl( index As Long, ctrl As Control)

AddControl 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。
index | 必需。包含新控件的页面的索引。
ctrl | 必需。要添加的控件。

说明

在运行时间添加控件时，将发生 AddControl 事件。在设计时间添加控件，或在运行时间初次加载并显示一个窗体时，此事件不会发生。

本事件的默认操作是将控件添加到指定的窗体、框架或者多页中。

Add 方法会将 AddControl 事件初始化。


AfterUpdate 事件

在通过用户界面更改了控件中的数据后，此事件发生。

语法

Private Sub object_AfterUpdate( )

AfterUpdate 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。

说明

AfterUpdate 事件的发生与该控件是否被连接（即通过 RowSource 属性为该控件指定一个数据源）无关。这个事件不能被取消。如果你想取消这次更改（恢复控件原来的值），请使用 BeforeUpdate 事件，并将参数 Cancel 设置为 True。

对于当前控件来说，AfterUpdate 事件发生在 BeforeUpdate 事件之后，Exit 事件之前。对于 Tab 键次序中的下一个控件来说，AfterUpdate 事件发生在 Enter 事件之前。


BeforeDragOver 事件

当拖放操作正在进行时该事件发生。

语法

对于框架
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于多页
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 TabStrip
Private Sub object_BeforeDragOver( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于其他控件
Private Sub object_BeforeDragOver( ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDragOver 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
index | 必需。受拖放操作影响的多页控件中页面的索引。
Cancel | 必需。事件状态。False 指示由控件处理该事件（这是默认方式）；True 指示由应用程序处理该事件。
ctrl | 必需。拖动正在经过的控件。
Data | 必需。在拖放操作中被拖动的数据。该数据被包装在 DataObject 中。
X, Y | 必需。控件位置的横坐标和纵坐标。这两个坐标都以磅为单位。X 从该控件的左侧边缘开始测量；Y 从该控件的顶部开始测量。
DragState | 必需。被拖动数据的转移状态。
Effect | 必需。放置源所支持的操作。
Shift | 必需。指定 Shift、Ctrl 和 Alt 键的状态。

设置

DragState 的设置如下：

常量 | 值 | 描述
fmDragStateEnter | 0 | 鼠标指针在目标范围之内。
fmDragStateLeave | 1 | 鼠标指针在目标范围之外。
fmDragStateOver | 2 | 鼠标指针在一个新的位置，但仍在同一目标范围内。

Effect 的设置如下：

常量 | 值 | 描述
fmDropEffectNone | 0 | 不将放置源复制或移动到放置目标。
fmDropEffectCopy | 1 | 将放置源复制到放置目标。
fmDropEffectMove | 2 | 将放置源移动到放置目标。
fmDropEffectCopyOrMove | 3 | 将放置源复制或移动到放置目标。

Shift 的设置如下：

常量 | 值 | 描述
fmShiftMask | 1 | 按下 Shift 键。
fmCtrlMask | 2 | 按下 Ctrl 键。
fmAltMask | 4 | 按下 Alt 键。

说明

当鼠标指针直接进入、离开或停留在一个有效的目标上时，用该事件监视鼠标指针。执行拖放操作过程中，当用户移动鼠标、按下或放开鼠标键(单个或多个键)时，系统初始化该事件。鼠标指针的位置决定了接收这一事件的目标对象。可以通过检查 DragState 参数来确定鼠标指针的状态。

当一个控件处理该事件时，可用 Effect 参数标识要执行的拖放动作。当 Effect 设置为“fmDropEffectCopyOrMove”时，放置源支持复制 (fmDropEffectCopy)、移动 (fmDropEffectMove) 或取消 (fmDropEffectNone) 操作。

当 Effect 被设置为“fmDropEffectCopy”时，放置源支持复制或取消 (fmDropEffectNone) 操作。

当 Effect 设置为“fmDropEffectMove”时，放置源支持移动或取消 (fmDropEffectNone) 操作。

当 Effect 设置为“fmDropEffectNone”时，放置源支持取消操作。

默认设置下，当 Cancel 为 False 时，大多数控件不支持拖放操作。也就是说，不能在该控件上拖动或放置任何目标，并且该控件不初始化 BeforeDropOrPaste 事件。但文本框和组合框控件是个例外，即使在 Cancel 为 False 时，这些控件也支持拖放操作。


BeforeDropOrPaste 事件

当用户即将在一个对象上放置或粘贴数据时，该事件发生。

语法

对于框架
Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于多页
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ctrl As Control, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于 TabStrip
Private Sub object_BeforeDropOrPaste( index As Long, ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

对于其他控件
Private Sub object_BeforeDropOrPaste( ByVal Cancel As MSForms.ReturnBoolean, ByVal Action As fmAction, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)

BeforeDropOrPaste 事件的语法具有以下成分：

成分 | 描述
object | 必需。一个有效对象名。
index | 必需。放置或粘贴操作将影响到的多页中页面的索引。
Cancel | 必需。事件状态。False 指示由控件处理该事件（这是默认方式）。True 指示由应用程序处理该事件。
ctrl | 必需。目标控件。
Action | 必需。根据当前的键盘设置，指出即将进行的拖放操作的结果。
Data | 必需。在拖放操作中被拖动的数据。该数据被包装在 DataObject 中。.
X, Y | 必需。当放置操作发生时鼠标箭头位置的横坐标和纵坐标。这两个坐标都以磅为单位。X 从控件的左侧边缘开始测量；Y 从控件的顶部边缘开始测量。
Effect | 必需。拖放操作对于目标控件的影响。
Shift | 必需。指定 Shift、Ctrl 键和 Alt 键的状态。。

设置

Action 的设置如下：

常量 | 值 | 描述
fmActionPaste | 2 | 将选中的对象粘贴到放置目标。
fmActionDragDrop | 3 | 指明用户已经将对象从源拖动到放置目标，并将对象放置到放置目标。

Effect 的设置如下：

常量 | 值 | 描述
fmDropEffectNone | 0 | 不将放置源复制或移动到放置目标。
fmDropEffectCopy | 1 | 将放置源复制到放置目标。
fmDropEffectMove | 2 | 将放置源移动到放置目标。
fmDropEffectCopyOrMove | 3 | 将放置源复制或移动到放置目标。

Shift 的设置如下：

常量 | 值 | 描述
fmShiftMask | 1 | SHIFT 键被按下。
fmCtrlMask | 2 | CTRL 键被按下。
fmAltMask | 4 | ALT 键被按下。

说明

对于多页或 TabStrip，当 Visual Basic for Applications 传输一个数据对象到该控件时初始化此事件。

对于其他控件，系统在即将进行放置或粘贴操作时初始化该事件。

当控件处理该事件时，可以更新 Action 参数以识别需执行的拖放操作。当 Effect 设置为“fmDropEffectCopyOrMove”时，可以将 Action 的值设置为“fmDropEffectNone”、“fmDropEffectCopy”或“fmDropEffectMove”。当 Effect 设置为“fmDropEffectCopy”或“fmDropEffectMove”时，可以把 Action 的值设置为“fmDropEffectNone”。当 Effect 设置为“fmDropEffectNone”时，不能对 Action 重新赋值。


BeforeUpdate 事件

控件中的数据被改变之前该事件发生。

语法

Private Sub object_BeforeUpdate( ByVal Cancel As MSForms.ReturnBoolean)

BeforeUpdate 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。
Cancel | 必需。事件状态。False 表示由控件处理该事件（这是默认方式）。True 取消更新并表示由应用程序处理该事件。

说明

该事件的发生与控件是否被连接（即通过 RowSource 属性为该控件指定一数据源）无关。对于该控件来说，这个事件发生在 AfterUpdate 和 Exit 事件之前（对于接收焦点的下一个控件来说，该事件发生在 Enter 事件之前）。

如果将 Cancel 参数设置为 True，焦点仍停留在该控件上，并且 AfterUpdate 事件和 Exit 事件都不会发生。


Change 事件

当 Value 属性改变时该事件发生。

语法

Private Sub object_Change( )

Change 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。

设置

当 Value 属性的设置改变时 Change 事件发生，无论属性改变是执行代码还是用户在界面上操作的结果，此事件都发生。

以下是改变 Value 属性的操作的几个例子：

  • 单击复选框、选项按钮或切换按钮。

  • 输入或选择组合框、列表框或文本框的新文本值。

  • 在 TabStrip 上选择一个不同的标签。

  • 移动滚动条中的滚动块。

  • 单击数值调节钮的向上箭头或向下箭头。

  • 在多页中选择不同的页。

说明

Change 事件过程可以使显示在诸多控件上的数据同步或一致。例如，可用滚动条的 Change 事件过程的来更新显示滚动条对应值的文本框的内容。也可用 Change 事件过程来实现在一个工作区内显示数据和公式，而在另一个工作区内显示其结果。

注意 在有些情况下，当 Value 属性改变时，Click 事件也可能发生。然而对于检测一个属性的新值而言，使用 Change 事件是首选的技术。


Click 事件

在下面两种情况下，发生该事件:

  • 用鼠标单击控件。

  • 用户最终在几种可能的值中为控件选择一个值。

语法

对于多页和 TabStrip
Private Sub object_Click( index As Long)

对于所有的其他控件
Private Sub object_Click( )

Click 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。
index | 必需。与该事件相关联的多页或 TabStrip 中的页或标签的索引。

说明

在导致 Click 事件发生的两种情况中，第一种情况应用于命令按钮、框架、图像、标签、滚动条和数值调节钮控件，而第二种情况用于复选框、组合框、列表框、多页、TabStrip 和切换按钮控件。当选项按钮控件的值变为 True 时，也会导致 Click 事件发生。

以下是初始化 Click 事件的操作的几个示例：

  • 单击窗体的空白区或窗体上的无效控件（除了列表框）。

  • 单击命令按钮控件。如果命令按钮尚不具有焦点，则 Enter 事件发生在 Click 事件之前。

  • 当命令按钮控件具有焦点时按 Spacebar 键。

  • 单击一控件。

  • 在窗体上按 Enter 键，该窗体上的一个命令按钮的 Default 属性设为 True，同时焦点没有位于其他的命令按钮上。

  • 在一个窗体上按 Esc 键，该窗体上有一个命令按钮的 Cancel 属性设为 True，同时焦点没有位于其他的命令按钮上。

  • 按一个控件的加速键。

当单击控件而引发 Click 事件时，所发生的一系列事件有：

  1. MouseDown

  2. MouseUp

  3. Click

对于某些控件，当 Value 属性改变时发生 Click 事件。但是，最好使用 Change 事件来检测一个属性的新值。下面是由于给控件赋新值而初始化 Click 的操作的示例：

  • 单击多页或 TabStrip 中的一个不同页面或标签。这些控件的 Value 属性反映了当前的页或标签。单击当前页或标签不改变控件的值，因而也就不初始化 Click 事件。

  • 单击复选框或切换按钮控件，当这些控件之一具有焦点时按 Spacebar 键，按这些控件中的一个的加速键，或者用代码改变该控件的值。

  • 将选项按钮值改为 True。将某组中的一个选项按钮值设为 True，则该群组内的其余按钮的值会自动设置为 False。只针对值变为 True 的那个按钮发生 Click 事件。

  • 选择一个组合框控件或者列表框控件的值，使其完全与该控件下拉列表中的某项匹配。例如，若列表未经排序，则在编辑区所键入字符的第一个匹配对象可能不是列表中唯一的匹配，所以选择这样的值并不初始化 Click 事件。在一个经排序的列表中，可用完全匹配方式来确保所选择的值是用户键入的文本的唯一匹配值。

若 Value 设置为 Null，则不会初始化 Click 事件。

注意 单击可改变控件的值，因而它能初始化 Click 事件。但用右键单击不会改变控件的值，所以它不会初始化 Click 事件。


DblClick 事件

当用户指向一个对象并双击鼠标时，发生 DblClick 事件。

语法

对于多页和 TabStrip
Private Sub object_DblClick( index As Long, ByVal Cancel As MSForms.ReturnBoolean)

对于其他事件
Private Sub object_DblClick( ByVal Cancel As MSForms.ReturnBoolean)

DblClick 事件的语法有以下几个成分：

成分 | 描述
object | 必需。一个有效的对象。
index | 必需。在 Pages 或 Tabs 集合里的 Page 或 Tab 对象的位置。
Cancel | 必需。事件状态。False 表示由控件处理该事件（这是默认方式）。True 表示由应用程序处理该事件。

说明

要使该事件发生，这两次击键必须发生在由系统的双击速度的设置所限定的时间范围之内。

对于支持 Click 的控件，DblClick 事件前发生的一系列事件有：

  1. MouseDown

  2. MouseUp

  3. Click

  4. DblClick

如果一个控件（例如文本框）不支持 Click 事件，则忽略上述事件序列中的 Click 事件。

如果双击时 Cancel 的返回值为 True，则控件将忽略第二次单击。如果第二次单击与第一次单击的作用相反，这是非常有用的，比如双击一个切换按钮。Cancel 参数允许窗体忽略第二次单击，因此无论是单击还是双击按钮都有同样的作用。


DropButtonClick 事件

每当下拉式列表出现或消失时，该事件发生。

语法

Private Sub object_DropButtonClick( )

DropButtonClick 事件的语法有以下几个成分：

成分 | 描述
object | 必需。一个有效的对象。

说明

通过代码或者在用户界面上采用某些操作，都可初始化 DropButtonClick 事件。

在代码中，调用 DropDown 方法会初始化 DropButtonClick 事件。

在用户界面上，以下任何操作均可初始化该事件：

  • 单击控件上的下拉按钮。

  • 按 F4 键。

上述任何操作，无论是发生在代码中还是界面上，都会使下拉框出现在控件上。当下拉框消失时，系统初始化 DropButtonClick 事件。


Enter、Exit 事件

一个控件从同一窗体的另一个控件实际接收到焦点之前，Enter 事件发生。同一窗体中的一个控件即将把焦点转移到另一个控件之前，Exit 事件发生。

语法

Private Sub object_Enter( )

Private Sub object_Exit( ByVal Cancel As MSForms.ReturnBoolean)

Enter 和 Exit 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
Cancel | 必需。事件状态。False 表示由该控件处理这个事件（这是默认方式）。True 表示由应用程序处理这个事件，并且焦点应当留在当前控件上。

说明

Enter 事件和 Exit 事件与 Visual Basic 中的 GotFocus 和 LostFocus 事件类似。与 GotFocus 和 LostFocus 事件不同的是，当窗体接收或失去焦点时 Enter 事件和 Exit 事件不发生。

例如，假如选中了可初始化 Enter 事件的复选框，而后如又选中同一窗体中的另一个控件，那么对于该复选框来说，Exit 事件被初始化（因为焦点正在移到同一窗体中的不同的对象上），而对于该窗体中的第二个控件来说，Enter 事件发生。

因为 Enter 事件发生在焦点移到一特定控件上之前，所以可用 Enter 事件过程来显示指令。例如，可用一个宏或者事件过程来显示一个小窗体或消息框，标识控件一般所包含的数据类型。

注意 将控件 Exit 事件的 Cancel 参数赋值为 True，可防止控件失去焦点。


Error 事件

当控件检测到一个错误，并且不能将该错误信息返回调用程序时该事件发生。

语法

对于多页
Private Sub object_Error( index As Long, ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

对于其他控件
Private Sub object_Error( ByVal Number As Integer, ByVal Description As MSForms.ReturnString, ByVal SCode As SCode, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, ByVal CancelDisplay As MSForms.ReturnBoolean)

Error 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
index | 必需。与此事件相关的多页中的页面的索引。
Number | 必需。指定控件用来标识该错误的唯一的值。
Description | 必需。对错误的文字描述。
SCode | 必需。为错误指定一个 OLE 状态码。低 16 位指定的值等于 Number 参数的值。
Source | 必需。标识初始化该事件的控件的字符串。
HelpFile | 必需。指定了描述该错误的帮助文件的完整路径名。
HelpContext | 必需。指定一个帮助文件主题的上下文 ID，该主题中含有对该错误的说明。
CancelDisplay | 必需。指定是否在消息框中显示该错误串。

说明

为 Error 事件编写的代码决定了该控件如何响应这个错误状况。

处理错误状况的能力随应用程序的不同而不同。当一个错误发生而应用程序没有能力进行处理时，Error 事件被初始化。


KeyDown 和 KeyUp 事件

按下和释放某键时这两个事件依次发生。按下键时发生 KeyDown 事件，而释放键时发生 KeyUp 事件。

语法

Private Sub object_KeyDown( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

Private Sub object_KeyUp( ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As fmShiftState)

KeyDown 和 KeyUp 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
KeyCode | 必需。整数，代表被按下或释放的键的键代码。
Shift | 必需。Shift、Ctrl 和 Alt 键的状态。

设置

Shift 的设置如下：

常量 | 值 | 描述
fmShiftMask | 1 | Shift 键被按下。
fmCtrlMask | 2 | Ctrl 键被按下。
fmAltMask | 4 | Alt 键被按下。

说明

对于一个运行中的窗体，如果该窗体或窗体上的某个控件具有焦点，则按下键时 KeyDown 事件发生。KeyDown 和 KeyPress 事件交替重复发生，直至用户释放此键，此刻 KeyUp 事件发生。这个具有焦点的窗体或控件接收所有的按键操作。只有在窗体上没有控件或所有可视控件全部失效时，窗体才可能具有焦点。

应用宏中的 SendKeys 操作或 Visual Basic 中的 SendKeys 语句将按键操作发送到一个窗体或控件时，这些事件也会发生。

KeyDown 和 KeyUp 事件通常用于识别或区分以下各键：

  • 扩充的字符键，比如功能键。

  • 翻阅键，如 Home、End、PageUp、PageDown、向上、向下、向右、向左和 Tab 键。

  • 组合键和标准键盘组合键 (Shift、Ctrl 或 Alt 键)。

  • 数字键区和键盘数字键。

在下列情况下，KeyDown 和 KeyUp 事件不发生：

  • 在带有命令按钮（其 Default 属性为 True ）的窗体上按 Enter 键。

  • 在带有命令按钮（其 Cancel 属性为 True）的窗体上按 Esc 键。

在按下或发送一个 ANSI 键时，KeyDown 和 KeyPress 事件发生。KeyUp 事件发生在按下或发送该键所引起的任何控件事件之后。若一次击键导致了焦点从一个控件移到另外一个控件，则对第一个控件发生 KeyDown 事件，对第二控件发生 KeyPress 和 KeyUp 事件。

和键盘相关的事件序列为：

  1. KeyDown

  2. KeyPress

  3. KeyUp

注意 KeyDown 和 KeyUp 事件仅用于窗体上的窗体和控件。要解释 ANSI 字符或找出与被按下的键相对应的 ANSI 字符，用 KeyPress 事件。


KeyPress 事件

当用户按下一个 ANSI 键时该事件发生。

语法

Private Sub object_KeyPress( ByVal KeyANSI As MSForms.ReturnInteger)

KeyPress 事件的语法有以下几个成分：

成分 | 描述
object | 必需。一个有效的对象。
KeyANSI | 必需。整数值，代表标准的数字 ANSI 键代码。

说明

当用户按下一个键，在运行的窗体上产生可键入字符（一个 ANSI 键），而该窗体或该窗体上的某个控件具有焦点时，KeyPress 事件发生。这个事件可以发生在该键被释放之前，也可以发生在该键被释放之后。当用宏的 SendKey 操作或用 Visual Basic 的 SendKeys 语句，将一个 ANSI 键操作发送到窗体或控件的时候，这个事件也会发生。

KeyPress 事件发生在下列任意键被按下时：

  • 任何可打印的键盘字符。

  • Ctrl 键与标准字母表中字符的组合。

  • Ctrl 键与任何特殊字符的组合。

  • Backspace 键。

  • Esc 键。

在下面情况下，KeyPress 事件不发生：

  • 按下 Tab 键。

  • 按下 Enter 键。

  • 按任何箭头键。

  • 引起焦点在控件之间移动的键击操作。

注意 Backspace 键是 ANSI 字符集的一部分，而 Delete 键不是。在一个控件中用 Backspace 键删除一个字符将引发 KeyPress 事件；而用 Delete 删除一个字符则不引发 KeyPress 事件。

按住产生 ANSI 键代码的键不放，KeyDown 和 KeyPress 事件交替重复发生。当释放此键，KeyUp 事件发生。具有焦点的窗体或控件接收所有的击键操作。只有没有控件的窗体，或者其所有可视控件都失效的窗体才可能有焦点。

KeyPress 事件的默认操作是处理被按下键所对应的事件代码。KeyANSI 指出了与所按下的键或组合键相对应的 ANSI 字符。KeyPress 事件把每个字符的大写和小写解释为互相独立的键码，因而作为两个独立的字符处理。

为了响应键盘的物理状态，或处理 KeyPress 事件无法辨认的键击操作，比如功能键、翻阅键、或这些键与键盘组合键（Alt、Shift 或 Ctrl 键）的任意组合，可使用 KeyDown 和 KeyUp 事件过程。

和键盘相关的事件序列有：

  1. KeyDown

  2. KeyPress

  3. KeyUp


Layout 事件

当一个窗体、框架或多页改变大小时该事件发生。

语法

对于多页
Private Sub object_Layout( index As Long)

对于所有其他控件
Private Sub object_Layout( )

Layout 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。
index | 必需。多页中改变大小的页的索引。

说明

Layout 事件的默认操作是计算控件的新位置并重新绘制屏幕。

改变控件大小可初始化 Layout 事件。

对支持 AutoSize 属性的控件，当 AutoSize 改变控件大小时，会初始化 Layout 事件。当用户改变了影响控件大小的属性的值，就会发生这种情况。例如，增加文本框或标签的字体大小，能明显地改变控件尺寸，并初始化 Layout 事件。


MouseDown 和 MouseUp 事件

用户单击鼠标按钮时发生。用户按下鼠标按键时发生 MouseDown 事件；用户释放鼠标按键时发生 MouseUp 事件。

语法

对于多页和 TabStrip
Private Sub object_MouseDown( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

对于其他控件
Private Sub object_MouseDown( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

Private Sub object_MouseUp( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseDown 和 MouseUp 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。
index | 必需。发生特定事件的多页和 TabStrip 中的页索引或标签索引。
Button | 必需。标识引起该事件的鼠标按键的整数值。
Shift | 必需。规定 Shift、Ctrl 和 Alt 键的状态。
X, Y | 必需。窗体、框架或页的位置的横坐标与纵坐标，以磅为单位，分别从左侧边缘和顶部边缘开始测量。

设置

Button 的设置如下：

常量 | 值 | 描述
fmButtonLeft | 1 | 按下左键。
fmButtonRight | 2 | 按下右键。
fmButtonMiddle | 4 | 按下中键。

Shift 的设置如下：

成分 | 描述
1 | 按下 Shift 键。
2 | 按下 Ctrl 键。
3 | 同时按下 Shift 和 Ctrl 键。
4 | 按下 Alt 键。
5 | 同时按下 Alt 和 Shift 键。
6 | 同时按下 Alt 和 Ctrl 键。
7 | 同时按下 Alt 、Shift 和 Ctrl 键。

用于标识键盘组合键的常量：

常量 | 值 | 描述
fmShiftMask | 1 | 检测 Shift 键的标记。
fmCtrlMask | 2 | 检测 Ctrl 键的标记。
fmAltMask | 4 | 检测 Alt 键的标记。

说明

对于多页，MouseDown 事件发生在用户在控件上按下鼠标按钮时。

对于 TabStrip，索引参数标识用户单击的标签。索引为 -1 时，表示用户没有单击标签。例如，如果控件的右上角没有标签，单击右上角会将索引值置为 -1。

对于窗体，在空白区、记录选择器、或滚动条上按下和释放鼠标按键会产生 MouseDown 和 MouseUp 事件。

与鼠标有关的事件序列：

  1. MouseDown

  2. MouseUp

  3. Click

  4. DblClick

  5. MouseUp

MouseDown 或者 MouseUp 事件过程规定了按下或释放鼠标按钮时应执行的动作。MouseDown 和 MouseUp 事件能够区别鼠标的左、右、中按钮。也可以为使用 Shift、Ctl 和 Alt 键盘组合键的鼠标—键盘组合编写代码。

如果在鼠标箭头在窗体或控件上时按下鼠标按钮，该对象“捕捉”鼠标并接收所有的鼠标事件，直到并包含最后的 MouseUp 事件。这意味着鼠标事件返回的鼠标箭头的 X，Y 坐标不会总在接收这些事件的对象的边界之内。

如果鼠标按键被连续按下，捕捉鼠标的对象接收所有的连续的鼠标事件，直到所有的按键被释放。

用 Shift 参数标识在 MouseDown 或 MouseUp 事件发生时 Shift、Ctrl 和 Alt 键的状态。例如，如果 Ctrl 和 Alt 键被同时按下，则 Shift 的值为 6。


MouseMove 事件

用户移动鼠标时该事件发生。

语法

对于多页和 TabStrip
Private Sub object_MouseMove( index As Long, ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

对于其他控件
Private Sub object_MouseMove( ByVal Button As fmButton, ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)

MouseMove 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
index | 必需。与此事件相关的多页或 TabStrip 中的页或标签的索引号。
Button | 必需。标识鼠标按键状态的整数值。
Shift | 必需。指定 Shift 、Ctrl 和 Alt 键的状态。
X, Y | 必需。水平和垂直位置坐标，以磅为单位，从控件的左侧边缘或顶部开始测量。

设置

index 参数指定了被单击的页。-1 表示用户没有单击任何页或标签。

Button 的设置如下：

值 | 描述
0 | 按键未被按下。
1 | 按下左键。
2 | 按下右键。
3 | 同时按下左键和右键。
4 | 按下中键。
5 | 同时按下左键和中键。
6 | 同时按下中键和右键。
7 | 三个按键全都按下。

Shift 的设置如下：

值 | 描述
1 | 按下 Shift 键。
2 | 按下 Ctrl 键。
3 | 同时按下 Shift 和 Ctrl 键。
4 | 按下 Alt 键。
5 | 同时按下 Alt 和 Shift 键。
6 | 同时按下 Alt 和 Ctrl 键。
7 | 同时按下 Alt、Shift 和 Ctrl 键。

用于标识各键盘组合键的常量：

常量 | 值 | 描述
fmShiftMask | 1 | 检测 Shift 的标记。
fmCtrlMask | 2 | 检测 Ctrl 的标记。
fmAltMask | 4 | 检测 Alt 的标记。

说明

MouseMove 事件用于窗体、窗体上面的控件和标签。

当鼠标箭头在对象上移动时，MouseMove 事件连续发生。只要鼠标位于对象的边界之内，对象就会不断识别 MouseMove 事件，直至其他对象“捕捉”到了鼠标为止。

移动窗体也能产生 MouseMove 事件，即使鼠标是静止的。当窗体在箭头的下移动时，便会产生 MouseMove 事件。如果一个宏或者事件过程通过移动窗体以响应 MouseMove 事件，则该事件会连续产生（级联的）MouseMove 事件。

如果两个控件靠得很近，且很快将鼠标箭头移过两控件之间的空间，则对于这个空间 MouseMove 事件可能不会发生。在这种情况下，就可能需要在两个控件中响应 MouseMove 事件。

可用 Button 参数返回的值标识鼠标按钮的状态。

用 Shift 参数标识 MouseMove 事件发生时的 Shift 键、Ctrl 键和 Alt 键的状态。例如，同时按下 Ctrl 和 Alt 键时，Shift 的值为 6。

注意 可用 MouseDown 和 MouseUp 事件过程响应按下和释放鼠标按键引起的事件。


RemoveControl 事件

当从容器中删除一个控件时该事件发生。

语法

对于多页
Private Sub object_RemoveControl( index As Long, ctrl As Control)

对于所有其他控件
Private Sub object_RemoveControl( ctrl As Control)

RemoveControl 事件的语法包含以下成分：

成分 | 描述
object | 必需。有效的对象名。
index | 必需。多页中包含被删控件的页的索引。
ctrl | 必需。被删除的控件。

说明

从窗体中删除控件时，该事件发生，但在因窗体关闭而卸载控件时，该事件不发生。


Scroll 事件

重新定位滚动块时，该事件发生。

语法

对于滚动条
Private Sub object_Scroll( )

对于多页
Private Sub object_Scroll( index As Long, ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

对于框架
Private Sub object_Scroll( ActionX As fmScrollAction, ActionY As fmScrollAction, ByVal RequestDx As Single, ByVal RequestDy As Single, ByVal ActualDx As MSForms.ReturnSingle, ByVal ActualDy As MSForms.ReturnSingle)

Scroll 事件的语法包含以下成分：

部分 | 描述
object | 必需。有效的对象名。
index | 必需。多页中与此事件相关的页的索引。
ActionX | 必需。水平方向发生的动作。
ActionY | 必需。垂直方向发生的动作。
RequestDx | 必需。要求滚动条在水平方向上移动的距离，以磅为单位。
RequestDy | 必需。要求滚动条在垂直方向上移动的距离，以磅为单位。
ActualDx | 必需。滚动条在水平方向上移动的距离，以磅为单位。
ActualDy | 必需。滚动条在垂直方向上移动的距离，以磅为单位。

设置

ActionX 和 ActionY 的设置如下：

常量 | 值 | 描述
fmScrollActionNoChange | 0 | 没有变化发生。
fmScrollActionLineUp | 1 | 对于垂直滚动条向上移动一小段距离；对于水平滚动条向左移动一小段距离。等效于按键盘上的上箭头键或左箭头键来移动滚动条。
fmScrollActionLineDown | 2 | 对于垂直滚动条向下移动一小段距离；对于水平滚动条向右移动一小段距离。等效于按键盘上的下箭头键或右箭头键来移动滚动条。
fmScrollActionPageUp | 3 | 对于垂直滚动条上移一页；对于水平滚动条左移一页。等效于按键盘上的 PageUp 键来移动滚动条。
fmScrollActionPageDown | 4 | 对于垂直滚动条下移一页；对于水平滚动条右移一页。等效于按键盘上的 PageDown 键来移动滚动条。
fmScrollActionBegin | 5 | 垂直滚动条的顶部；水平滚动条的左端。
fmScrollActionEnd | 6 | 垂直滚动条的底部；水平滚动条的右端。
fmScrollActionPropertyChange | 8 | ScrollTop 属性或 ScrollLeft 属性的值发生了改变。移动的方向和距离取决于变化了的属性及其新值。
fmScrollActionControlRequest | 9 | 控件请求它的容器滚动。移动的距离取决于特定的控件和有关的容器。
fmScrollActionFocusRequest | 10 | 用户移动到不同的控件。移动的距离取决于选中的控件的位置，并且一般来说有移动选中的控件的作用，所以这对用户完全可见的。

说明

与窗体、框架或页有关的 Scroll 事件返回下列参数：ActionX、ActionY、ActualX 和 ActualY。ActionX 和 ActionY 标识发生的动作。ActualX 和 ActualY 标识滚动块移动的距离。

默认的动作是计算滚动块的新位置，然后再滚动到那个位置。

对于窗体、框架和页，使用 Scroll 方法可以初始化 Scroll 事件。用户移动滚动块也能产生 Scroll 事件。

和一独立的滚动条相关的 Scroll 事件反映的是用户在任何方向移动滚动框。通过代码改变滚动条的值不能初始化这个事件；若用户通过单击滚动条的某些部分而不是滚动块，改变了滚动条的值，也不能初始化这个事件。


SpinDown 和 SpinUp 事件

用户单击数值调节钮的向下或向左箭头时发生 SpinDown 事件。用户单击数值调节钮的向上或向右箭头时发生 SpinUp 事件。

语法

Private Sub object_SpinDown( )

Private Sub object_SpinUp( )

SpinDown 和 SpinUp 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象。

说明

SpinDown 事件减少 Value 属性。SpinUp 事件增加 Value 属性。


Zoom 事件

当 Zoom 属性的值改变时该事件发生。

语法

对于框架
Private Sub object_Zoom( Percent As Integer)

对于多页
Private Sub object_Zoom( index As Long, Percent As Integer)

Zoom 事件的语法包含以下成分：

成分 | 描述
object | 必需。一个有效的对象名。
index | 必需。多页中与此事件相关的页的索引。
Percent | 必需。窗体缩放的百分比。有效的取值范围为 10％ 到 400％。

说明

Zoom 属性的值指明了该窗体或页的大小如何变化。这个属性的值指示了该控件的大小相对于它当前的大小应当如何变化。小于 100 的值使该窗体的显示尺寸缩小；大于 100 的值使该窗体的显示尺寸放大。

可将该属性的值设置为 10 到 400 之间的任意整数。


Add 方法

用于在 TabStrip 或多页中添加或插入一个标签或页，或通过其程序设计标识符 (ProgID) 在页或窗体中添加控件。

语法

对于多页和 TabStrip
Set Object = object.Add( [ Name [, Caption [, index]]])

对于其他控件
Set Control = object.Add( ProgID [, Name [, Visible]])

Add 方法的语法包括以下成分：

成分 | 描述
object | 必需。有效对象名。
Name | 可选。指定被添加的对象的名称。如果没有指定名称，系统将根据使用该窗体的应用程序的规则，产生一默认的名称。
Caption | 可选。指定在标签或控件上出现的题注。如果没有指定题注，系统将根据使用该窗体的应用程序的规则，产生一默认的题注。
index | 可选。表示页或标签在 Pages 或 Tabs 集合中的位置。若没有规定索引，系统会将页或标签添加到 Pages 或 Tabs 集合的末尾，并赋于它相应的索引值。
ProgID | 必需。程序设计标识符。是用于标识对象类的、没有空格的文本串。ProgID 的标准语法是 <Vendor>.<Component>.<Version>。ProgID 会被映射为类标识符 (CLSID)。
Visible | 可选。若对象为可见的（这是默认方式）则为 True；若对象为隐藏的则为 False。

设置

单个控件的 ProgID 值：

复选框 | Forms.CheckBox.1
组合框 | Forms.ComboBox.1
命令按钮 | Forms.CommandButton.1
框架 | Forms.Frame.1
图像 | Forms.Image.1
标签 | Forms.Label.1
列表框 | Forms.ListBox.1
框架 | Forms.MultiPage.1
选项按钮 | Forms.OptionButton.1
滚动条 | Forms.ScrollBar.1
数值调节钮 | Forms.SpinButton.1
TabStrip | Forms.TabStrip.1
文本框 | Forms.TextBox.1
切换按钮 | Forms.ToggleButton.1

说明

对于 MultiPage 控件，Add 方法返回一个 Page 对象。对于 TabStrip 控件，它返回 Tab 对象。集合的第一个 Page 或 Tab 的索引值为 0，第二个 Page 或 Tab的索引值为 1，依此类推。

对于一个对象的 Controls 集合，Add 方法返回一个响应指定 ProgID 的控件。添加控件之后，AddControl 事件发生。

设计时，必须使用 Microsoft Visual Basic for Applications Extensibility Library 的 Designer 属性在用户窗体的 Controls 集合中添加控件。Designer 属性返回 UserForm 对象。

下面的语法将返回特定控件的 Text 属性。

userform1.thebox.text

若在运行时间添加一个控件，必须用惊叹号语法引用该控件的属性。例如，要返回在运行时间添加的控件的 Text 属性，需用下面的语法：

userform1!thebox.text

注意 在运行时间可以更改控件的 Name 属性，但前提是这个控件必须是运行时用 Add 方法添加的。


AddItem 方法

对于单列的列表框或组合框，在列表中添加一项。对于多列的列表框或组合框，在列表中添加一行。

语法

Variant = object.AddItem [ item [, varIndex]]

AddItem 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Item | 可选。指定要添加的项或行。第一个项或行的编号为 0；第二个项或行的编号为 1，依此类推。
varIndex | 可选。整数，指定新的项或行在对象中的位置。

说明

如果提供一个有效的 varIndex 的值，AddItem 方法就把项或行放在列表中的那个位置。如果忽略 varIndex，此方法就把项或行添加在列表的末尾。

varIndex 的值不能大于 ListCount 属性的值。

对于多列列表框或者组合框，AddItem 方法插入一个完整的行，也就是，它为此控件的每一列都插入一项。为了给第一列后面的项赋值，可用 List 或 Column 属性来规定项的行和列。

如果控件连接上数据以后，AddItem 方法将会失败。

注意 用 List 可以同时在组合框或列表框中添加不止一行。


Clear 方法

从一个对象或集合中删去所有对象。

语法

object.Clear

Clear 方法的语法有以下几个成分；

成分 | 描述
object | 必需。有效对象。

说明

对于 MultiPage 或 TabStrip，Clear 方法删除单个页和标签。

对于列表框或组合框，Clear 方法删去表中所有的项。

对于 Controls 集合，Clear 删除在运行时间用 Add 方法创建的控件。对在设计时间内创建的控件使用 Clear 将会出错。

如果连接上数据以后，Clear 方法将会失败。


Copy 方法

将对象的内容复制到剪贴板上。

语法

object.Copy

Copy 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

原始内容仍保留在该对象里面。

实际复制的内容取决于这个对象。例如，在页面上，Copy 方法复制当前选中的控件（可以不止一个）。在文本框或组合框上，它复制当前被选中的文本。

对于窗体、框架或页面，Copy 方法复制当前活动的控件。


Cut 方法

从一个对象中删除选定的信息并将它送达剪贴板。

语法

object.Cut

Cut 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

对于组合框或文本框，Cut 方法将当前选中的控件中的文本移至剪贴板。这个方法不要求此控件具有焦点。

在页面、框架或窗体中，Cut 将当前选中的控件移至剪贴板。这个方法只移动在运行时间创建的控件。


DropDown 方法

显示组合框的列表区。

语法

object.DropDown

DropDown 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

在组合框中使用 DropDown 方法打开组合框中的列表。


GetFormat 方法

返回一个整数值，表明指定的格式是否在 DataObject 上。

语法

Boolean = object.GetFormat( format)

GetFormat 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
format | 必需。整数或字符串，用来表示可能存在于 DataObject 之中的特定格式。如果特定的格式存在于 DataObject 之中，则 GetFormat 返回 True。

设置

format 的设置如下：

值 | 描述
1 | 文本格式
字符串或任何非 1 的整数 | 由 SetText 传递到 DataObject 的用户自定义的 DataObject 格式

说明

GetFormat 方法在 DataObject 的当前格式列表中搜索一个格式。如果该格式在 DataObject 之中，GetFormat 返回 True；否则 GetFormat 返回 False。

目前，DataObject 只支持文本格式。


GetFromClipboard 方法

从剪贴板复制数据到 DataObject。

语法

String = object.GetFromClipboard( )

GetFromClipboard 方法的语法如下:

成分 | 描述
object | 必需。有效对象名

说明

DataObject 可以包含多个数据项，但每个数据项必须有不同的格式。例如，DataObject 可以包含一个文本项和用户定义项，但不能同时有两个文本项。


GetText 方法

用特定的格式在 DataObject 中检索一文本串。

语法

String = object.GetText( [ format])

GetText 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象名。
format | 可选。字符串或整数，用来指定要在 DataObject 中检索的数据的格式。

设置

format 的设置如下：

值 | 描述
1 | 文本格式。
字符串或任何非 1 的整数 | 从 SetText 传递到 DataObject 的用户自定义的 DataObject 格式。

说明

DataObject 支持多种格式，但只支持每种格式的一个数据项。例如，DataObject 可能包含一个文本项和一个自定义格式的项；但不能包含两个文本项。

如果不指定格式，GetText 方法要求从 DataObject 中得到文本格式的信息。


Item 方法

返回集合的一个成员，无论按位置，还是按名称。

语法

Set Object = object.Item( collectionindex)

Item 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
collectionindex | 必需。集合中成员的位置或索引。

设置

collectionindex 可以是字符串，也可以是整数。如果是字符串，则必须是一个有效的成员名。如果是一个整数，其最小值为 0，而最大值比集合中的项目数少 1。

说明

如果指定的索引或名称无效，则出错。


Move 方法

移动一个窗体或控件，或者移动 Controls 集合中的所有控件。

语法

对于窗体或控件
object.Move( [Left [, Top [, Width [, Height [, Layout]]]]])

对于 Controls 集合
object.Move( X, Y)

Move 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象名。
Left | 可选。单精度值，以磅为单位，表示对象左边缘的横坐标。
Top | 可选。单精度值，以磅为单位，表示对象上边缘的纵坐标。
Width | 可选。单精度值，以磅为单位，表示对象的宽度。
Height | 可选。单精度值，以磅为单位，表示对象的高度。
Layout | 可选。布尔量，表示在这次移动之后控件的父对象是否初始化 Layout 事件。其默认值为 False。
X, Y | 必需。单精度值，以磅为单位，指定了 Controls 集合中每个控件的当前水平和垂直位置的变化量。

设置

Left、Top、Width、Height、X 和 Y 参数的最大值和最小值，随应用程序的不同而不同。

说明

对于窗体和控件，可将一个选定对象移动到相对于该对象所在窗体的边缘的特定的地方。

可以利用命名的参数，或者可以输入位置参数。如果用命名的参数，可以用任意的次序列出这些参数；如果不用命名参数，必须按上面语法成分给出的顺序输入这些参数，用逗号来标识未指定的参数的相对位置。任何未指定的参数都保持其原值不变。

对于 Controls 集合，可以将此集合中的所有控件由当前所在窗体、框架或页面中的位置移动一规定的距离。


Paste 方法

把剪贴板上的内容传送到一个对象。

语法

object.Paste

Paste 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

将粘贴到组合框或者文本框中的数据作为文本来处理。

粘贴方法若用于窗体，可将任何对象粘贴到窗体上。


PutInClipboard 方法

将数据从 DataObject 移到剪贴板上。

语法

object.PutInClipboard

PutInClipboard 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

PutInClipboard 方法将文本格式的 DataObject 的内容替换剪贴板的内容。


RedoAction 方法

其作用与目前大多数“撤消”操作相反。

语法

Boolean = object.RedoAction

RedoAction 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

“重复”取最后一个“撤消”操作的相反结果，这个“撤消”不一定是最后一个采取的动作。不是所有的操作都能撤消的。

例如，往文本框中粘贴文本之后，然后选择“撤消”命令删除这段文本，那么用“重复”命令又可以把这段文本放回去。

注意 如果 CanRedo 属性为 False，则在用户界面上“重复”命令无效，代码中的 RedoAction 方法也无效。

如果 RedoAction 成功，它返回 True。


Remove 方法

从集合中删除一个成员，或者从框架、页面或窗体中删除一个控件。

语法

object.Remove( collectionindex)

Remove 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
collectionindex | 必需。成员在集合内的位置或索引。可以是数字，也可是字符串。如果该值是数字，则最小值为 0，最大值比集合中的成员数少一。若该值为字符串，则必须对应有效的成员名。

说明

此方法只删除在运行时间添加的控件。但如果想删除在设计时间添加的控件，则会出错。


RemoveItem 方法

从列表框或组合框的列表中删去一行。

语法

Boolean = object.RemoveItem index

RemoveItem 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
index | 必需。指定要删除的行。第一行的行号为 0，第二行的行号为 1，依此类推。

如果列表框被数据连接（也就是，当 RowSource 属性为列表框规定了数据源时），此方法不能从该列表中删去一行。


Repaint 方法

重画窗体或页，更新显示。

语法

Boolean = object.Repaint

Repaint 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

倘若一个对象的内容或者外貌严重地改变了，而且不想等待到系统自动重画这个区域。那么 Repaint 方法很有用。


Scroll 方法

移动对象上的滚动条。

语法

object.Scroll( [ ActionX [, ActionY]])

Scroll 方法的语法如下:

成分 | 描述
object | 必需。有效对象名
ActionX | 可选。标识水平方向发生的动作。
ActionY | 可选。标识垂直方向发生的动作。

设置

ActionX 和 ActionY 的设置为:

常量 | 值 | 描述
fmScrollActionNoChange | 0 | 不在指定的方向上滚动。
fmScrollActionLineUp | 1 | 在垂直滚动条中的向上移动或在水平滚动条中的向左移动与按键盘上的上箭头或左箭头进行移动是相同的。
fmScrollActionLineDown | 2 | 在垂直滚动条中的向下移动或在水平滚动条中的向右移动与按键盘上的下箭头或右箭头进行移动是相同的。
fmScrollActionPageUp | 3 | 在垂直滚动条中的向上移动一页或在水平滚动条中的向左移动一页与按键盘上的 Page Up 键进行移动是相同的。
fmScrollActionPageDown | 4 | 在垂直滚动条中的向上移动一页或在水平滚动条中的向左移动一页与按键盘上的 Page Down 键进行移动是相同的。
fmScrollActionBegin | 5 | 在垂直滚动条中向上移动到页首或在水平滚动条中向左移动到结尾。
fmScrollActionEnd | 6 | 在垂直滚动条中向下移动到底或在水平滚动条中向右移动到结尾。

说明

Scroll 方法应用于出现在窗体和框架或页面上并且超出其显示区域的滚动条。该方法不能应用于独立的滚动条或文本框上的滚动条。


SetDefaultTabOrder 方法

用默认的自上向下和自左向右的 Tab 键顺序来为窗体上的每个控件设置 TabIndex 属性。

语法

object.SetDefaultTabOrder

SetDefaultTabOrder 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

Microsoft 窗体设置的 Tab 键顺序是从窗体左上角的控件开始，向右移动。离窗体左边缘越近的越是排在 Tab 键顺序的前面。如果有不止一个控件到窗体左边界的距离相同，那么 Tab 键顺序的值便自上向下地分配，谁在上面谁就在前面。


SetFocus 方法

将焦点移动到对象的实例中。

语法

object.SetFocus

SetFocus 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

若设置焦点失败，焦点又回到原来的对象上，并产生一个错误。

在默认情况下，设置焦点到一个控件并不激活该控件的窗口，也没有将其置于其他控件的上面。

SetFocus 方法对于空的框架以及包含其他控件的框架都有效。空的框架自身接受焦点，任何后续的键盘事件都作用于该框架。在包含其他控件的框架中，焦点移到该框架中的第一个控件，后续的键盘事件皆作用于拥有焦点的控件。


SetText 方法

用特定的格式复制文本串到 DataObject。

语法

object.SetText( StoreData [, format])

SetText 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
StoreData | 必需。定义存储在 DataObject 中的数据。
format | 可选。整数或字符串，规定 StoreData 的格式。从 DataObject 中检索数据时，该格式标识需检索的数据段。

设置

format 的设置如下：

值 | 描述
1 | 文本格式。
字符串或非 1 的整数值 | 用户自定义的 DataObject 格式。

说明

DataObject 按照数据自身的格式存储数据。当用户提供一个字符串时，DataObject 在指定的格式下保存该文本。

如果 DataObject 含有与新数据格式相同的数据，那么新数据将替换 DataObject 中原有的数据。如果新数据的格式是新的，那么新数据与新格式一起被添加到 DataObject 中，与原先存在的数据共存。

如果没有规定格式，SetText 方法将 Text 格式赋予文本串。如果规定了一个新格式，DataObject 将新格式登记在系统中。


StartDrag 方法

初始化针对 DataObject 的拖放操作。

语法

fmDropEffect=Object.StartDrag([Effect as fmDropEffect])

StartDrag 方法的语法有以下几个成分：

成分 | 描述
Object | 必需。有效对象。
Effect | 可选。放置操作对目标控件所起的作用。

设置

Effect 的设置如下：

常量 | 值 | 描述
fmDropEffectNone | 0 | 没有将放置源复制或移动到放置目标。
fmDropEffectCopy | 1 | 将放置源复制到放置目标。
fmDropEffectMove | 2 | 将放置源移动到放置目标。
fmDropEffectCopyOrMove | 3 | 将放置源复制或移动到放置目标。

说明

拖动操作开始于当前鼠标指针位置以及当前键盘状态，而结束于用户释放鼠标按键。拖放操作的最终效果取决于为放置目标所选的作用。

例如，控件的 MouseMove 事件可能包含 StartDrag 方法。当用户单击控件并移动鼠标时，鼠标箭头将改变，以示 Effect 对于放置目标是否有效。


UndoAction 方法

与最近的动作（必须是支持"撤消"命令的）相反的动作。

语法

Boolean = object.UndoAction

UndoAction 方法的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

用户界面上的“撤消”命令使用 UndoAction 方法。例如，若将文本粘贴到文本框，可用 UndoAction 方法来删除这文本，并重新储存文本框的原先的内容。

不是所有的用户的动作都可以撤消。如果动作不能撤消，跟在这个词动作后面的“撤消”命令命令也就无效。

注意 如果 CanUndo 属性为 False，则用户界面上的“撤消”命令便无效，并且代码中的 UndoAction 也无效。

若 UndoAction 用于窗体，对当前记录做的所有改变都丢失。若 UndoAction 用于控件，只有该控件自身受到影响。

必须在窗体或控件被更新之前使用这个方法。可能想在窗体的 BeforeUpdate 事件中，或者控件的 Change 事件中包含 UndoAction 方法。

UndoAction 可以代替 SendKeys 语句，在事件过程中发送一个 ESC 的值。


ZOrder 方法

将对象放在 z-顺序的前面或后面。

语法

object.ZOrder( [ zPosition])

ZOrder 方法的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
zPosition | 可选。控件位置，在容器的 z-顺序的前面还是后面。

设置

zPosition 的设置如下：

常量 | 值 | 描述
fmTop | 0 | 把控件放在 z-顺序的最前面。该控件将出现在其他控件的上面（默认值）。
fmBottom | 1 | 把控件放在 z-顺序的最后面。该控件将出现在其他控件的下面。

说明

当几个窗体和控件出现在用户面前时，z-顺序决定它们的层叠方式。在 z-顺序后面的项被它前面的项遮盖；在 z-顺序前面的项总出现它后面的项的上面。当 zPosition 参数被略去时，对象便被带到了前面。

在设计模式用“置前”或“置后”命令设置 z-顺序。“置前”命令与使用 ZOrder 方法将对象放在 z-顺序之前的效果相同。“置后”命令与使用 ZOrder 方法将对象放在零序号之后的效果相同。

该方法不影响 Controls 集合中控件的内容或顺序。

注意 叠放命令（如“置后”或“置前”命令）不能重复或撤消。例如，若选择一个对象并单击快捷菜单上的“下移一层”命令，则该操作将不能重复或撤消。


复选框控件

显示某个项目的选中状态。

说明

利用复选框可以允许用户从两个值中选择一个，例如从 Yes/No、True/False 或 On/Off 中进行选择。如果选中了复选框，它会显示特殊的标记（如 X），而且其当前设置为 Yes、True 或 On；如果没有选中复选框，那么它是空白的，而且其设置为 No 、False 或 Off。复选框还可以具有 null 值，这种情况与 TripleState 属性的值有关。

如果将复选框连接到了数据源，则改变复选框的设置会改变数据源的取值。禁用的复选框显示的是当前取值，但其颜色变灰且不允许通过用户界面修改该值。

也可以在群组框中使用复选框，以选择一组相关项目中的一个或多个项目。例如，可以创建一个包含可选项目清单的订单窗体，每个项目前有一个复选框。用户可以通过选中相应的复选框来选择某个或某些项目。

复选框的默认属性是 Value 属性。

复选框的默认事件是 Click 事件。

注意 通过设置选项，也可以在列表框中使用复选标记。根据应用程序的需要，可以用列表框控件来取代一组复选框控件。


组合框控件

组合框将列表框和文本框的特性结合在一起。用户可以像在文本框中那样输入新值，也可以像在列表框中那样选择已有的值。

说明

如果将组合框连接到了数据源，那么组合框会将用户输入或选择的值插入到该数据源中。如果连接的是多列组合框，那么 BoundColumn 属性将哪个值保存到连接的数据源中。

组合框中的列表由多行数据构成。每行可有一列或多列，列标题是可有可无的。有些应用程序不支持列标题，还有些只提供有限的支持。

组合框的默认属性是 Value 属性。

组合框的默认事件是 Change 事件。

注意 如果希望在任何时候都将列表中的各行数据显示出来，那么可以使用列表框代替组合框。如果希望在使用组合框时，只使用列表中列出的值，可设置组合框的 Style 属性，以使该控件看上去像下拉列表框。


命令按钮控件

启动、结束或中断一项操作或一系列操作。

说明

为命令按钮的 Click 事件所指定的宏或事件过程决定了命令按钮可以完成什么操作。例如，可以创建能够打开另一个窗体的命令按钮。在命令按钮上可以显示文本或图片，或者二者同时显示。

命令按钮的默认属性是 Value 属性。

命令按钮的默认事件是 Click 事件。


Controls 集合

Controls 集合汇集了某个对象所包含的全部控件。

说明

对象的 Controls 集合中的每个控件都具有唯一的索引，索引值可以是整数或字符串。集合中的第一个控件的索引值是 0；第二个控件的索引是 1；依此类推。该索引表明了控件加入集合的顺序。

如果索引为字符串，则它代表控件的名称。控件的 Name 属性也表示该控件的名称。

可用 Controls 集合对控件进行枚举或计数，并设置它们的属性。例如，可以对某个窗体的 Controls 集合进行枚举，并将每个控件的 Height 属性都设置为指定值。

注意 在对集合进行枚举时可以使用 For Each...Next 语句。


DataObject 对象

DataObject 对象是转移操作中所使用的带格式文本数据的中转区。该对象还保留了与 DataObject 中保存的各段文本相对应的格式列表。

说明

DataObject 对象能够保存一段“剪贴板”文本格式的文本，并能为每种附加的文本格式（例如自定义和用户定义的格式）保存一段文本。

DataObject 对象与“剪贴板”不同。DataObject 支持与“剪贴板”及文本的拖放操作有关的命令。在开始进行与“剪贴板”有关的操作（如 GetText）或拖放操作时，与该操作有关的数据会被移到 DataObject 对象中。

DataObject 对象的工作方式与“剪贴板”很相象。如果将一串文本复制到 DataObject 对象，DataObject 对象将保存该文本。如果将相同格式的第二段文本复制到该 DataObject 对象，则 DataObject 对象将清除前一文本，并保存第二段的文本。对于每种指定的格式，它保存一段从最近一次操作得到的文本。


框架控件

用于创建功能上及视觉上的控件组。

说明

框架中的所有选项按钮是互斥的，所以可用框架创建选项组，还可用框架将关系密切的控件组合起来。例如，在处理顾客订单的应用中，可用框架将顾客的姓名、地址和帐号组合在一起。

还可用框架创建切换按钮组，但切换按钮不是互斥的。

框架的默认事件是 Click 事件。


Font 对象

定义控件或窗体所用文字的特征。

说明

每个控件或窗体都有自己的 Font 对象，使用该对象可为该控件设置独立于其他控件和窗体的文字特征。可用字体属性来指定字体名称，设置粗体或带下划线的文字，或调整文字的大小。

注意 窗体或容器的字体决定了窗体中控件的默认字体属性。

Font 对象的默认属性是 Name 属性。如果 Name 属性包含空字符串，则 Font 对象使用系统默认字体。


图像控件

用于在窗体中显示图片。

说明

可用图像控件将图片作为数据的一部分显示在窗体中。例如，可用图像控件在人事管理窗体中显示雇员的照片。

可用图像控件来剪裁、调整大小或缩放图片，但不能编辑图片的内容。例如，不能用图像控件改变图片的颜色，以将图片变成透明的，也不能对图片进行加工。这些工作必须通过图像编辑软件完成。

图像控件支持以下文件格式：

  • *.bmp

  • *.cur

  • *.gif

  • *.ico

  • *.jpg

  • *.wmf

注意 在标签控件中也可以显示图片。然而标签不支持对图片的剪裁、调整大小或缩放操作。

图像的默认事件是 Click 事件。


标签控件

用于显示描述性文本。

说明

窗体中的标签控件用于显示描述性文本，如标题、题注或简单的指导信息。例如地址簿的标签可以包括姓名、街道或城市。标签不能显示来自数据源或表达式的值；它总是非连接的，并且不会随着从一条记录移到另一条记录而改变。

标签的默认属性是 Caption 属性。

标签的默认事件是 Click 事件。


列表框控件

用于显示一些值的列表，用户可以从中选择一个或多个值。

说明

如果将列表框连接到了数据源，则列表框会将用户选择的值保存到数据源中。

列表框能够以列表形式出现，也能够以一组选项按钮控件或复选框控件的形式出现。

列表框的默认属性是 Value 属性。

列表框的默认事件是 Click 事件。

注意 不能在下拉式的列表框中放入文本。


多页控件

用于将多屏信息作为单个集合给出。

Pages (Page) 对象

说明

多页控件在处理可以划分为不同类别的大量信息时很有用。例如，在人事管理应用程序中，可用多页控件显示雇员信息：一页用于显示个人信息，如姓名和地址；另一页列出工作经历；第三页列出参考信息。利用多页控件能够将相关信息组织在一起显示出来，同时又能够随时访问整条记录。

新页被添加到当前所选页的右边，但不紧靠着它。

注意 多页控件是 Pages 集合的容器，每个多页控件都保存了一个或多个 Page 对象。

多页控件的默认属性是 Value 属性，该属性返回多页控件的 Pages 集合中当前活动页面的索引编号。

多页控件的默认事件是 Change 事件。


选项按钮控件

用于显示群组选项中每一项的选中状态。

说明

用选项按钮显示群组中的某一项是否被选中。请注意框架中的各个选项按钮是互斥的。

如果将选项按钮连接到了数据源，则选项按钮能够用来显示该数据源的值，如 Yes/No 、True/False 或 On/Off 中的值。如果选中了选项按钮，则其当前设置为 Yes、 True 或 On；如果没有选中选项按钮，则其当前设置为 No、False 或 Off。例如，在库存情况跟踪程序中，可用选项按钮显示某种货物是否缺货。如果将选项按钮连接到了数据源，那么改变选项按钮的设置将同时改变数据源中的值。禁用的选项按钮会变暗，并且不显示值。

选项按钮可以具有 null 值，这与 TripleState 属性的值有关。

也可以在群组框中使用选项按钮，以选择一组相关项目中的一个或多个。例如，可以创建一个包含可选项目清单的订单窗体，每个项目前有一个选项按钮。用户可以通过选中相应的选项按钮来选择某个项目。

选项按钮默认属性是 Value 属性。

选项按钮默认事件是 Click 事件。


Page 对象

是多页控件中的一个页面，Pages 集合中的一个成员。

Pages (Page) 对象

说明

每个 Page 对象都包括一套自己的控件，并且不需要依赖于集合中其他 Page 对象的信息。Page 对象从其容器中继承了一些属性；每个继承属性都由容器进行赋值。

在 Pages 集合中每个 Page 对象都具有唯一的名称和索引。既可用名称也可用索引引用 Page 对象。集合中的第一个 Page 对象的索引为 0；第二个 Page 对象的索引是 1；依此类推。如果两个 Page 对象具有相同的名称，则必须用它们的索引值引用各个 Page 对象。在代码中使用名称进行引用时，只能访问使用该名称的第一个 Page 对象。

第一个 Page 对象的默认名称为 Page1；第二个 Page 对象的默认名称为 Page2。


Pages 集合

Pages 集合包含多页控件中的所有页面。

说明

每个 Pages 集合都提供用于管理集合中页面的序号以及标识当前所用页面的功能。

Pages 集合中的 Page 对象具有唯一的名称和索引值。可用名称或索引值引用 Page 对象。集合中的第一个 Page 对象的索引是 0；第二个 Page 对象的索引是 1；依此类推。第一个页面的默认名称是 Page1；第二个页面的默认名称是 Page2。

Pages 集合的默认值指示出了集合的当前 Page 对象。


滚动条控件

根据滚动块的位置，返回或设置另一控件的值。

说明

滚动条是可放置在窗体中的独立控件。它看上去与某些控件（如列表框或组合框的下拉部分）中的滚动条类似。然而，与这些例子中的滚动条不同，独立的滚动条不是任何其它控件的组成部分。

为了用滚动条设置或读取其它控件的值，必须为滚动条的事件和方法编写代码。例如，为了用滚动条更新文本框的值，可编写代码读取滚动条的 Value 属性，然后设置文本框的 Value 属性。

滚动条的默认属性是 Value 属性。

滚动条的默认事件是 Change 事件。

注意 要创建横向或纵向的滚动条，请在窗体中横向或纵向拖动滚动条的尺寸控点。


数值调节钮控件

用于增加及减少数值。

说明

单击数值调节钮只会改变数值调节钮的值。可以编写代码来用数值调节钮更新其他控件的显示值。例如，可用数值调节钮改变显示在日期中的年、月或日。也可用数值调节钮在某个取值范围或项目列表中滚动，或改变文本框中显示的值。

要显示通过数值调节钮更新的值，必须将数值调节钮的值赋给某个控件的显示部分，例如标签控件的 Caption 属性或文本框的 Text 属性。要创建横向或纵向的数值调节钮，请在窗体中沿横向或纵向拖动数值调节钮的尺寸控点。

数值调节钮的默认属性是 Value 属性。

数值调节钮的默认事件是 Change 事件。


Tab 对象

Tab 对象是 Tabs 集合的一个成员。

Tabs 集合 (Tab)

说明

在视觉效果上，Tab 对象看起来像是从一个较大的矩形区域延伸出的一个小矩形，或者像一个与矩形区域相连接的按钮。

与 Page 对象不同，Tab 对象中不包含任何控件。出现在由 TabStrip 所界定的区域内的控件同 TabStrip 一样，都是包含在窗体之中的。

每个 Tab 对象都具有它自己的属性集，但没有方法或事件。必须使用相应的 TabStrip 的事件来启动对单个 Tab 的处理。

每个 Tab 对象在集合中都具有唯一的名称和索引值。可用其名称或索引值引用 Tab对象。第一个 Tab 对象的索引是 0；第二个 Tab 对象的索引是 1；依此类推。如果两个 Tab 对象具有相同的名称，就必须用索引值对它们进行引用。如果在代码中使用名称进行引用，则只能访问使用该名称的第一个 Tab 对象。


Tabs 集合

Tabs 集合包含 TabStrip 控件中的所有标签。

说明

每个 Tabs 集合都提供用于管理集合中标签的序号，以及标识当前所用标签的功能。

Tabs 集合的默认值指示了集合的当前标签。

Tabs 集合中 Tab 对象具有唯一的名称和索引值。可用名称或索引值引用 Tab 对象。Tab 对象的索引值反映了它在集合中的顺序。集合中的第一个 Tab 对象的索引是 0；第二个 Tab 对象的索引是 1；依此类推。


TabStrip 控件

用于将一系列相关的控件显示为一个群组。

Tabs 集合 (Tab)

说明

通过 TabStrip 可以查看相关控件的不同的信息集合。

例如，可用一组控件显示工作组中各个成员的日程安排，控件组所显示的不同信息集对应于小组中不同的人。将每张标签的标题设置为成员的姓名，然后通过编写代码实现如下功能 ：在单击某张标签时更新控件组，以显示该标签所标识成员的相关信息。

注意 TabStrip 是 Tabs 集合的容器，而 B>Tabs 集合又包括了一组 Tab 对象。

TabStrip 的默认属性是 SelectedItem 属性。

TabStrip 的默认事件是 Change 事件。


文本框控件

用于显示用户输入的或是组织好的一系列数据信息。

说明

文本框是最常用的用于显示用户输入信息的控件。同时也能显示一系列数据，例如数据库表、查询、工作表或计算结果。如果将文本框连接到了数据源，则对文本框内容所作的修改也会改变它所连接的数据源中的值。

对文本框中任何一段文字进行的格式设置都将影响该控件中的所有文字。例如，改变该控件中任何字符的字体或磅值大小，将对该控件中的所有字符产生影响。

文本框的默认属性是 Value 属性。

文本框的默认事件是 Change 事件。


切换按钮控件

显示项目的选中状态。

说明

用切换按钮显示某个项目是否被选中。如果将切换按钮连接到了数据源，则切换按钮会将该数据源的值显示为 Yes/No、True/False、 On/Off 的其中之一。如果选中了切换按钮，则当前设置为 Yes、True 或 On；如果未选中切换按钮，则设置为 No、False 或 Off。如果将切换按钮连接到了数据源，则改变切换按钮设置将同时改变数据源中的值。禁用的切换按钮能够显示值，但会变暗，并且不能通过用户界面进行修改。

也可在框架中使用切换按钮，以在一组相关项目中选择一个或多个项目。例如，可以创建一个包含可选项目清单的订单窗体，每个项目前有一个切换按钮。用户可以通过选择相应的切换按钮来选择某个项目。

切换按钮的默认属性是 Value 属性。

切换按钮的默认事件是 Click 事件。


UserForm 窗口


Accelerator 属性

设置或检索控件的加速键。

语法

object.Accelerator [= String]

Accelerator 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。用作加速键的字符。

说明

要指定加速键，请为 Accelerator 属性输入单个字符。可以在控件的属性表中或在代码中设置 Accelerator。如果该属性值含有好几个字符，则字符串中第一个字母成为 Accelerator 的值。

使用加速键时，没有可见的反馈（除了焦点）来表明控件已初始化 Click 事件。例如，若将加速键用于命令按钮，用户在界面上看不到按钮被按下。但是在用户按加速键时，该按钮接受焦点。

如果将加速键用于标签，则在 Tab 键顺序中跟在标签后面的控件接受焦点，而不是标签自身。


ActiveControl 属性

标识和允许操作具有焦点的控件。

语法

object.ActiveControl

ActiveControl 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

说明

ActiveControl 属性是只读的，当界面上的控件被选中时，该属性即被设置。在设置属性或调用方法时，可以用 ActiveControl 来替代控件名。


Alignment 属性

规定控件与其题注的相对位置。

语法

object.Alignment [= fmAlignment]

Alignment 属性语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmAlignment | 可选。题注位置。

设置

fmAlignment 的设置值如下：

常量 | 值 | 描述
fmAlignmentLeft | 0 | 题注位于控件左边。
fmAlignmentRight | 1 | 题注位于控件右边（默认）

说明

控件的题注文本是左对齐的。

注意 尽管切换按钮中存在 Alignment 属性，但该属性无效。不能为切换按钮设置或返回该属性的值。


AutoSize 属性

规定对象是否自动调整大小以显示其完整的内容。

语法

object.AutoSize [= Boolean]

AutoSize 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。是否自动调整大小。

设置

Boolean 设置值如下：

值 | 描述
True | 控件可自动调整大小以显示其完整的内容。
False | 控件尺寸保持不变。如果内容超出了控件的区域，内容将被剪裁（默认）。

说明

对于有题注的控件，AutoSize 属性规定控件是否将自动调整大小以显示完整题注。

对于没有题注的控件，该属性规定控件是否将自动调整大小以显示保存在控件中的信息。例如，将组合框的 AutoSize 设置为 True，从而自动设置显示区的宽度以与当前文本长度匹配。

对于单行文本框，将 AutoSize 设置为 True，从而自动将显示区的宽度设置为文本框中文本的长度。

对于不包含文本的多行文本框，将 AutoSize 设置为 True，从而自动将文本显示为一列。此时，文本列宽设置为可以容纳该字体最宽的字母的宽度；文本列的高度设置为可以显示文本框中整个文本的高度值。

对于包含文本的多行文本框，将 AutoSize 设置为 True，从而自动在垂直方向扩大文本框以显示整个文本。而文本框的宽度不变。

注意 当 AutoSize 为 True 时，如果手工改变控件大小，则手工的改变将覆盖先前已由 AutoSize 设置的大小。


AutoTab 属性

用来规定：当用户在文本框或组合框的文本框区域输入最大允许字符数时，是否自动跳格。

语法

object.AutoTab [= Boolean]

AutoTab 属性语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。规定是否会自动跳格。

设置

Boolean 的设置值如下：

值 描述

True | 跳格发生。
False | 跳格不发生（默认）。

说明

MaxLength 属性规定了在文本框或组合框的文本框区域内所允许的最大字符数。

如果在窗体中，需要经常输入一组字符数，则可给文本框或组合框规定 AutoTab 属性。用户输入了最大字符数后，焦点将自动移到 Tab 键顺序中的下一个控件。例如，如果文本框显示的库存原材料数总是五个字符长，就可用 MaxLength 规定输入文本框的最大字符数，并用 AutoTab 使用户输入五个字符后可自动跳格到下一个控件。

对于 AutoTab 的支持随应用程序的不同而不同。不是所有的容器都支持这个属性。


AutoWordSelect 属性

指定是采用单词还是采用字符，来作为扩展选定内容的基本单元。

语法

object.AutoWordSelect [= Boolean]

AutoWordSelect 属性的语法包含以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。指定用于扩展选定内容的基本单元。

设置

Boolean 的设置值如下：

值 | 描述
True | 用单词作为基本单元（默认值）。
False | 用字符作为基本单元。

说明

AutoWordSelect 属性指定文本框或组合框的编辑区域中的选定内容如何扩展或压缩。

若用户将插入点放置在一个单词的中间，然后扩展选定内容，则当 AutoWordSelect 为 True 时，选定内容将包括完整的这个单词。


BackColor 属性

规定对象的背景色。

语法

object.BackColor [= Long]

BackColor 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。值或常量，指定对象的背景颜色。

设置

可采用任意整数来表示某一种有效的颜色，也可采用由红、绿、兰三元色素构成的 RGB 函数来指定某种颜色，每一种色素的值是 0 至 255 之间的任意整数。例如：值为 4966415 的整数或红、绿、兰色素值为 15、200、75 的 RGB 函数，均代表青色。

说明

只有在 BackStyle 属性设为 fmBackStyleOpaque 时，才可看到对象的背景颜色。


BackStyle 属性

返回或设置对象的背景方式。

语法

object.BackStyle [= fmBackStyle]

BackStyle 属性的语法包含以下几个成分：

成分 | 描述
object | 必需。有效对象。
fmBackStyle | 可选。指定控件背景。

设置

fmBackStyle 的设置值如下：

常数 | 值 | 描述
fmBackStyleTransparent | 0 | 背景为透明。
fmBackStyleOpaque | 1 | 背景为不透明（默认值）。

说明

BackStyle 属性决定一个控件是否透明。若 BackStyle 的值为 fmBackStyleOpaque，则控件是不透明的，无法看到窗体中控件背后的内容。若 BackStyle 的值为 fmBackStyleTransparent，则可透过控件看到窗体中控件背后的内容。

注意 BackStyle 属性对位图的透明性不起作用。欲将位图设为透明，则必须使用图片编辑器，如画笔。并非所有控件都支持透明的位图。


Bold、Italic、Size、StrikeThrough、Underline、Weight 属性

指定某显示或打印的窗体中的文本的视觉属性。

语法

object.Bold [= Boolean]

object.Italic [= Boolean]

object.Size [= Currency]

object.StrikeThrough [= Boolean]

object.Underline [= Boolean]

object.Weight [= Integer]

Bold、Italic、Size、StrikeThrough、Underline 和 Weight 属性的语法包含以下这些成分：

成分 | 描述
object | 必需。有效对象名。
Boolean | 可选。指定字体样式。
Currency | 可选。指定字体大小的数字。
Integer | 可选。指定字体样式。

Boolean 的设置值如下：

值 | 描述
True | 文本已具有指定的属性（为 bold、italic、size、strikethrough、underline markes 或 weight）。
False | 文本无指定的属性（默认值）。

Weight 属性的数值范围为 0 至 1000 之间的数值。若数值为 0，则允许系统选择最佳粗细程度，若数值为 0 至 1000 之间的某一数值，则代表某一特定的粗细值，1 为颜色最浅，1000 为颜色最深。

说明

以上属性决定了文本的视觉特征。Bold 属性指定文本是常用字体还是粗体；Italic 属性指定文本是常用字体还是斜体；Size 属性指定被显示的文本的高度，以磅为单位；Underline 属性指定文本是否有下划线；StrikeThrough 属性指定文本是否有删除标记；Weight 属性指定文本的粗细类型。

字体在屏幕上的显示效果可能与打印出的效果有所不同，这取决于计算机和打印机。若选择了某一字体，而系统本身没有安装或无法按指定属性显示字体，则操作系统将会选择一种相似的字体作为替代。该字体会尽可能与所需字体相似。

改变 Bold 的值，Weight 的值也将随之改变。设置 Bold 为 True 的同时，Weight 即被设为 700；将 Bold 设为 False，Weight 即被设为 400。反之，将 Weight 设为大于 550 的值时，则 Bold 即被设为 True；将 Weight 设为小于 550 的值时，则 Bold 即被设为 False。

由操作系统确定默认磅值的大小。


BorderColor 属性

指定对象的边框颜色。

语法

object.BorderColor [= Long]

BorderColor 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。值或常量，指定对象的边框颜色。

设置

可采用任意整数来代表某一种有效的颜色，也可采用由红、绿、兰三元色素构成的 RGB 函数来指定一种颜色，每一种色素的数值为 0 至 255 之间的任意整数。例如：数值为 4966415 的整数，或红、绿、兰三元色素值为 15、200、75 的 RGB 函数值，两者均代表青色。

说明

若要使用 BorderColor 属性，则必须将 BorderStyle 属性设置为除 fmBorderStyleNone 以外的数值。

BorderStyle 使用 BorderColor 来设定边框颜色。SpecialEffect 属性仅采用系统颜色来设定其边框颜色。对于 Windows 操作系统，系统颜色设置是“控制面板”的一部分，并且在“显示”文件夹中的“外观”选项卡中可以找到。在 Windows NT 4.0 或更高的版本中，系统颜色的设置存放在“控制面板”的“颜色”文件夹中。


BorderStyle 属性

指定控件或窗体的边框类型。

语法

object.BorderStyle [= fmBorderStyle]

BorderStyle 属性的语法包含以下几个成分：

成分 | 描述
object | 必需。有效对象。
fmBorderStyle | 可选。指定边框类型。

设置

fmBorderStyle 的设置值如下：

常量 | 值 | 描述
fmBorderStyleNone | 0 | 控件无可见的边框线。
fmBorderStyleSingle | 1 | 控件有一单线的边框（默认值）。

对于组合框、框架、标签、列表框或文本框的默认值为 0(None)，对于图像控件的默认值为 1 (Single)。

说明

对于框架，若 SpecialEffect 属性为 None，则 BorderStyle 属性被忽略。

只可选用 BorderStyle 或 SpecialEffect 属性中的一种来指定某一控件的边框，而不能同时采用这两种属性。当其中一种属性被设为一非零的值时，则另一属性自动被设为零。例如：若将 BorderStyle 设为 fmBorderStyleSingle，则系统将 SpecialEffect 设为 0 (Flat)；若将 SpecialEffect 设为一非零的值，则系统将 BorderStyle 设为 0。

BorderStyle 用 BorderColor 来定义其边框的颜色。


BoundColumn 属性

标识多列组合框或列表框中的数据的来源。

语法

object.BoundColumn [= Variant]

BoundColumn 属性的语法包含以下几个成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。标识选择 BoundColumn 属性值的方法。

设置

Variant 的设置值如下：

值 | 描述
0 | 将 ListIndex 属性的值赋予控件。
1 或者大于 1 | 将指定列中的值赋予控件。当采用此属性时，列从 1 开始计数（默认值）。

说明

当选择了某个多列列表框或组合框的一行时，BoundColumn 属性标识出将该行的哪一条目作为控件的值存储。例如：若各行均包括 8 个条目，而 BoundColumn 的值为 3，则系统将当前所选行的第三列中的信息作为该对象的值。

可向用户显示某一数据集，而在存储时，则通过使用 BoundColumn 和 TextColumn 属性，为对象存储不同的却相关联的值。组合框中的文本框部分所显示的数据列和保存在 Text 属性的值由 TextColumn 所标识；为对象存储的关联数据值的列则由 BoundColumn 标识。例如，你可设置某一多列的列表框，其中第一列包括了节日的名称，第二列包括了节日的具体日期。若要向用户展示节日的名称，可将第一列指定为 TextColumn；若要储存节日的具体日期，则将第二列指定为 BoundColumn。如果要隐藏节日的具体日期，则将第二列的 ColumnWidths 属性设定为零。

若控件与某个数据源相连接，则由在 ControlSource 属性中命名的数据源来存储 BoundColumn 所指定的列中的值。

ListIndex 中的值检索选中行的行号。例如：若要知道被选项的所在行，可将 BoundColumn 设为 0，以便将被选行的行号赋予控件，作为控件的值。请注意，如果你引用某一清单，而其内容可能已经有所改变，则检索的必须是当前值，而非以前存储过的值。

Column、List 和 ListIndex 属性均采用基于 0 的计数方法。即：第一项（行或列）的值为 0，第二项为 1，以此类推。这就意味着若 BoundColumn 设为 3，那么你可以用表达式 Colum(2) 来存取存储在该列中的数值。


BoundValue 属性

控件接受焦点时，包含控件的值。

语法

object.BoundValue [= Variant]

BoundValue 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。控件的当前状态或内容。

设置

控件 | 描述
复选框 | 整数值，表明条目是否被选中。
 | Null 表明条目处于空状态，既没有被选中也没有被清除。
 | -1 True。表明条目被选中。
 | 0 False。表明条目被清除。
选项按钮 | 与复选框相同。
切换按钮 | 与复选框相同。
滚动条 | 整数，介于 Max 和 Min 属性所指定的值之间。
数值调节钮 | 与滚动条相同。
复选框，列表框 | 当前选中行的 BoundColumn 属性中的值。
命令按钮 | 总是 False。
多页控件 | 整数，指示当前活动页。
 | 零 (0)，指示第一页。最大值是总页数减 1。
文本框 | 编辑区的文本。

说明

BoundValue 应用于具有焦点的控件。

在大多数情况下，BoundValue 和 Value 属性的内容相同。当用户编辑控件以便改变它的值时，在修改动作完成之前，BoundValue 和 Value 的内容是不同的。

改变控件的值时会发生一系列的事件。例如，如果改变文本框中的文本，将有下列事件发生：

  1. 初始化 Change 事件。此时 Value 属性包含新文本，而 BoundValue 包含早先的文本。

  2. 初始化 BeforeUpdate 事件。

  3. 初始化 AfterUpdate 事件。BoundValue 和 Value 再次一致，都包含新文本。

BoundValue 不能用于多重选择列表框。


Cancel 属性

返回或设置一数值，以标识某命令按钮是否是一个窗体的 Cancel 按钮。

语法

object.Cancel [= Boolean]

Cancel 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判定对象是否为 Cancel 按钮。

设置

Boolean 的设置值如下：

值 | 描述
True | 命令按钮是 Cancel 按钮。
False | 命令按钮不是 Cancel 按钮（默认值）。

说明

若命令按钮或对象的执行功能相当于命令按钮，可被指定为默认的命令按钮。对于 OLE 容器控件（只在 Windows 中），则只将 Cancel 属性提供给适合作为命令按钮的对象。

在窗体中只有一个命令按钮可作为 Cancel 按钮。若将某一命令按钮的 Cancel 值设为 True，则窗体上所有的其他对象被自动设为 False。若命令按钮的 Cancel 属性被设为 True，并且是一个激活的窗体，用户就可以用鼠标单击此命令按钮，或按 Esc 键，或当此按钮具有焦点时再按 Enter 键，以执行此键的功能。

Cancel 的典型用法就是允许用户取消那些不想执行的更改，并将窗体返回到原来的状态。

若窗体支持某些不能被撤消的操作（如删除操作），则建议用户将 Cancel 设为默认按钮。方法是将 Cancel 和 Default 属性均设为 True。


CanPaste 属性

指定在剪贴板中是否包含对象支持的数据。

语法

object.CanPaste

CanPaste 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

返回值

CanPaste 属性的返回值为：

值 | 描述
True | 鼠标指针下的当前对象可接受从剪贴板中粘贴的信息（默认值）。
False | 鼠标指针下的当前对象不能接受从剪贴板中粘贴的信息。

说明

CanPaste 属性是只读的。

若剪贴板中的数据采用的是当前目标对象所不支持的格式，则 CanPaste 属性为 False。例如，若试图将位图粘贴到某个只支持文本的对象中，则 CanPaste 将为 False。


CanRedo 属性

表明最近的撤消操作可否反向执行。

语法

object.CanRedo

CanRedo 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

返回值

CanRedo 属性的返回值：

值 | 描述
True | 最近的撤消操作可反向执行。
False | 最近的撤消操作不可反向执行。

说明

CanRedo 是只读的。

执行一次重复操作即意味着反向执行一次撤消操作（两者互相反其道而行之），但这不一定代表重复执行用户的上一次操作。

下面的用户操作可以解释撤消和重复操作：

  1. 改变一个选项按钮的设置；

  2. 在一文本框内输入文本；

  3. 单击“撤消”按钮，则文本框中的文本内容消失；

  4. 单击“撤消”按钮，则选项按钮的设置恢复为原先的设置；

  5. 单击“重复”按钮，则选项按钮的设置值改变；

  6. 单击“重复”按钮，则重新显示文本框中的文本内容。


CanUndo 属性

表明用户的上一次操作是否可撤消。

语法

object.CanUndo

CanUndo 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

返回值

CanUndo 属性的返回值为：

值 | 描述
True | 用户的最近一次操作可以撤消。
False | 用户的最近一次操作不可以撤消。

说明

CanUndo 是只读的。

用户的许多操作均可通过“撤消”命令撤消。而 CanUndo 属性则表明最近一次操作是否可以撤消。


Caption 属性

在对象中出现的、用于标识或描述该对象的描述性文本。

语法

object.Caption [= String]

Caption 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。字符串表达式，用以计算作为题注显示的文本。

设置

控件的默认设置值是基于控件类型的唯一名称。例如，窗体第一个命令按钮的默认题注为 CommandButton1。

说明

该文本可标识或描述与之关联的对象。对于按钮和标签，Caption 属性指定在控件中显示的文本；对于 Page 和 Tab 对象，则指定在标签中显示的文本。

若控件的题注太长，则此题注将被截短。若窗体的题注太长，而题注栏又太短，此题注将带省略号显示。

控件的 ForeColor 属性决定题注中文本的颜色。

提示 若某控件同时具有 Caption 和 AutoSize 属性，将 AutoSize 设为 True，控件就会自动调整大小，以容纳整个题注。


ClientHeight、ClientLeft、ClientTop、ClientWidth 属性

定义某个 TabStrip 显示区域的大小和位置。

语法

object.ClientHeight [ =Single]

object.ClientLeft [ =Single]

object.ClientTop [ =Single]

object.ClientWidth [ =Single]

ClientHeight、ClientLeft、ClientTop 和 ClientWidth 属性的语法包含以下几个成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。对于 ClientHeight 和 ClientWidth，以磅为单位指定了显示区域的长度和宽度；对于 ClientLeft 和 ClientTo，以磅为单位指定了与 TabStrip 容器的顶部或左边缘之间的距离。

说明

在运行时间，ClientLeft、ClientTop、ClientHeight 和 ClientWidth 将自动储存 TabStrip 内部区域的坐标和大小，TabStrip 中的对象共享该内部区域。


Column 属性

指定列表框或复选框中的一个或多个条目。

语法

object.Column( column, row ) [= Variant]

Column 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
column | 可选。整数，取值范围为 0 到总列数减 1 之间的数值。
row | 可选。整数，取值范围为 0 到总行数减 1 之间的数值。
Variant | 可选。指定欲加载到列表框或组合框的一个值、一列值或一个二维数组。

设置

如果同时指定了行和列的值，Column 将对某一指定条目进行读或写。

如果仅指定了列的值，则 Column 属性将对对象中当前行中的指定列进行读或写。例如：MyListBox.Column(3) 将对 MyListBox 中的第三列进行读或写。

Column 从光标处返回一个 Variant。当内置光标提供了 Variant 的值（例如在使用 AddItem 方法时），则此值为一字符串。当由外部光标提供 Variant 的值时，Variant 内不包含与该数据相关联的格式。

说明

可以用 Column 属性将组合框或列表框中的内容赋予另一控件，如文本框。例如：可将某个文本框中的 ControlSource 属性值设置为另一列表框的第二列。

当引用组合框或列表框中的一列，而用户并未做出选择时，Column 的设置值为 Null。通过调用 IsNull 函数即可查出该状态。

可用 Column，将值的完整的二维数组复制到一个控件中去。该语法允许快速加载一个选择清单，而无须用 AddItem 逐一加载清单中的每个元素。

注意 当从一个二维数组中复制数据时，Column 将转置控件中数组的内容，以使 ListBox1.Column(Y, X) 的内容与 MyArray(X,Y) 中的内容相同。也可通过 List 复制数组，而无须转置。


ColumnCount 属性

指定列表框或组合框的显示列数。

语法

object.ColumnCount [= Long]

ColumnCount 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。指定需显示的列数。

说明

若在某公司雇员表中，将列表框的 ColumnCount 属性设置为 3，则一列可列出雇员的姓氏，另一列可列出雇员的名字，第三列可列出雇员的 ID 号码。

将 ColumnCo unt 设为 0，则显示第 0 列；设为 -1，将显示所有列。对于未被连接的数据源，最大列数为 10（第 0 列至第 9 列）。

可用 ColumnWidths 属性设置控件中各列的显示宽度。


ColumnHeads 属性

显示列表框、组合框及接受列题注的对象中的列标题行。

语法

object.ColumnHeads [= Boolean]

ColumnHeads 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。指定是否显示列题注。

设置

Boolean 的设置值如下：

值 | 描述
True | 显示列题注。
False | 不显示列题注（默认值）。

只有拉下列表时，才显示组合框中的题注。

说明

当系统用数据项中的第一行作为列题注时，则不可选中该行。


ColumnWidths 属性

指定多列的组合框或列表框中的各列的宽度。

语法

object.ColumnWidths [= String]

ColumnWidths 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。以磅为单位设置列的宽度。若设为 -1 或空白，则列宽需要计算。设为 0 则隐藏该列。若要指定另一种不同的度量单位，则必须包括该度量单位。大于 0 的数值则是该列的精确宽度值。

设置

要把各列分隔开，可采用分号 (;) 作为列表分隔符。在 Windows 中可以使用 Windows “控制面板”中的“区域设置”的选项中所指定的列表分隔符来改变该值。

ColumnWidths 属性中的任意或全部设置值均可为空串。仅输入列表分隔符而没有预置值便可建立一个空串设置。

若属性页中设置为 -1，则该属性页的显示值为空白。

ColumnWidths 为空串或 -1 时，若要计算列的宽度，则将控件宽度等分，给予列表中的各列。若所指定的各列宽度的总和大于该控件的宽度，则在控件内部，列表将左对齐，而最右边的一列或数列不被显示。用户可用水平滚动条来滚动列表，以显示最右边的各列。

由计算产生的列宽度最小值为 72 磅（1 英寸）。欲采用更窄的列，则需精确地指定宽度。

除非特殊指定，通常列宽以磅为单位计算。若要指定其他度量单位，则需将此单位作为值的一部分。下面的各例指出了以不同单位计算列宽的方法，并描述了在 4 英寸宽，并包含有 3 列的列表框内如何进行恰当的设置：

设置 | 效果
90;72;90 | 第一列为 90 磅（1.25 英寸），第二列为 72 磅（1 英寸），第三列为 90 磅。
6 cm;0;6 cm | 第一列为 6 厘米，第二列被隐藏，第三列为 6 厘米。由于第三列只能部分显示，因此出现一水平滚动条。
1.5 in;0;2.5 in | 第一列为 1.5 英寸，第二列被隐藏，第三列为 2.5 英寸。
2 in;;2 in | 第一列为 2 英寸，第二列为 1 英寸（默认值），第三列为 2 英寸。由于第三列只能部分显示，因此出现一水平滚动条。
(Blank) | 三列宽度相等（1.33 英寸）。

说明

在组合框中，系统显示由控件的文本框部分 TextColumn 属性所指定的列。


ControlSource 属性

标识用于设置或储存控件中 Value 属性的数据位置。ControlSource 属性可接受 Microsoft Excel 工作表区域。

语法

object.ControlSource [= String]

ControlSource 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。指定链接到控件 Value 属性的工作表单元格。

说明

ControlSource 属性可标识某单元格或字段；但它不包含存储于该单元格或字段中的数据。如果改变控件的 Value 值，该改变将自动地反映在相链接的单元格或字段中。同样地，如果改变相链接的单元格或字段中的值，此改变也将自动地反映在控件的 Value 值中。

不能为 ControlSource 指定另一个控件，否则会产生错误。

ControlSource 的默认值为一空字符串。如果 ControlSource 包含一个非空的字符串，它将标识被链接的单元格或字段。当控件被加载时，该单元格或字段中的内容会被自动复制到 Value 属性中。

注意 若 Value 属性为 Null，则由 ControlSource 所标识的位置中不存在任何数值。


ControlTipText 属性

指定当用户将鼠标指针放在控件上但未按下时所显示的文本。

语法

object.ControlTipText [= String]

ControlTipText 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。当用户将鼠标指针放在控件上时所显示的文本。

说明

ControlTipText 属性可为用户提供有关当前运行的窗体中某一控件的提示。该属性可在设计时间设定，但仅在运行时间由控件显示。

ControlTipText 的默认值为空字符串，此时，该控件将无任何提示。


Count 属性

返回集合的对象数。

语法

object.Count

Count 属性的语法有如下几个成分：

成分 | 描述
object | 必需。有效对象。

说明

Count 属性是只读的。

请注意：集合的第一页或标签的索引值为 0，第二个值为 1。例如，某个多页控件包含两页， 则页的索引值为 0 和 1，Count 属性的索引值为 2。


CurLine 属性

指定控件的当前行。

语法

object.CurLine [= Long]

CurLine 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。指定控件的当前行。

说明

控件中的当前行即为包含插入点的行。第一行的行号为 0。

CurLine 属性仅在控件具有焦点时有效。


CurTargetX 属性

在一个多行文本框或组合框中，检索插入点的水平首选位置。

语法

object.CurTargetX

CurTargetX 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。

返回值

CurTargetX 属性检索首选位置，以丝米为单位度量。1 丝米是 0.0001米。

说明

目标位置是相对于控件的左边缘的。若某行的长度小于 CurTargetX 属性的值，则可将插入点置于该行尾。设置 Curx 属性或用户设置插入点时，CurTargetX 的值将会改变。CurTargetX 属性为只读。

对象具有焦点时返回值有效。

可以使用 CurTargetX 和 CurX，使用户滚动多行文本框或组合框中的内容时， 移动插入点。当用户滚动对象的内容，将插入点移到文本的其他行时，CurTargetX 指定了插入点的首选位置。若文本行的长度大于 CurTargetX 属性的值，则 CurX 将被设置成该值，否则 CurX 即被设为文本的行尾。


CurX 属性

指定插入点在多行文本框或组合框中的当前水平位置。

语法

object.CurX [= Long]

CurX 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。表明当前位置，以丝米为单位度量。1 丝米相当于 0.0001 米。

说明

CurX 属性应用于多行的文本框或组合框。当对象具有焦点时，返回值有效。

可用 CurTargetX 和 CurX 属性，使用户滚动多行文本框或组合框的内容时，定位插入点。当用户滚动对象的内容，将插入点移到另一行时，CurTargetX 指定了插入点的首选位置。若文本行的长度大于 CurTargetX 的值，CurX 将被设成该值，否则 CurX 即被设为文本的行尾。


Cycle 属性

指定当用户离开某框架或 Page 的最后一个控件时所应采取的操作。

语法

object.Cycle [= fmCycle]

Cycle 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
fmCycle | 可选。指定该循环是否包括嵌套在框架或多页控件中的对象。

设置

fmCycle 的设置值为：

常数 | 值 | 描述
fmCycleAllForms | 0 | 在窗体的控件以及当前显示在窗体中的框架和多页控件的控件上进行的循环。
fmCycleCurrentForm | 2 | 在窗体、框架或多页控件中的控件上进行的循环。只要没有将焦点设定到窗体、框架或多页控件以外的控件中，它将一直停留在窗体、框架或多页控件内。

若给 Cycle 指定了一个非整数值，该值将被四舍五入为最接近此数的一个整数。

说明

当用户在一个窗体或子窗体内跳格时，Tab 键顺序指定控件接收焦点的顺序。当用户从 Tab 键顺序内的最后一个控件上跳走时，Cycle 属性决定了将要采取的操作。

当用户从Tab 键顺序内的最后一个控件上跳走时，fmCycleAllForms 设置将焦点传输至该窗体中的下一个框架或多页控件的第一个控件。

当用户从 Tab 键顺序内的最后一个控件上跳走时，fmCycleCurrentForm 设置将焦点传送至同一个窗体、框架或多页控件的第一个控件。


Default 属性

在一个窗体中设定默认的命令按钮。

语法

object.Default [= Boolean]

Default 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判定该命令按钮是否为默认按钮。

设置

Boolean 的设置值如下：

值 | 描述
True | 命令按钮是默认的命令按钮。
False | 命令按钮不是默认按钮（默认值）。

说明

当某一命令按钮或对象的执行功能相当于命令按钮时，则可将其设定为默认的命令按钮。在一个窗体中，只有一个对象可被设为默认的命令按钮。若将某一对象的 Default 属性设为 True，则窗体中的其他对象的 Default 属性将自动设为 False。

若要选择激活窗体上的默认命令按钮，用户可以用鼠标单击此按钮，或当其他命令按钮不具有焦点时按下 Enter 键。当其他命令按钮没有焦点时，按下 Enter 键也可初始化默认命令按钮的 KeyUp 事件。

Default 是为 OLE 容器控件（只在 Windows 中）提供的，该控件的特定功能相当于命令按钮。

提示 对于那些支持不可撤消的操作（如 Delete）的窗体，应考虑将 Cancel 按钮作为默认命令按钮。若要实现此功能，则应将 Default 和 Cancel 属性均设为 True。


Delay 属性

指定数值调节钮或滚动条上的 SpinUp、 SpinDown 和 Change 事件的延迟。

语法

object.Delay [= Long]

Delay 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。事件之间以毫秒为单位的延迟。

说明

当用户在数值调节钮或滚动条上多次单击和按住按钮时，Delay 属性影响因此所产生的连续的 SpinUp 、SpinDown 和 Change 事件之间的间隔时间。第一个事件将立即发生；第二个事件出现的延迟等于 Delay 指定值的五倍。该起始的延迟使单个事件的生成简单易行，但对事件流则非如此。

在这个起始延迟之后，事件之间的间隔等于 Delay 的指定值。

Delay 的默认值是 50 毫秒。这就是说，在 250 毫秒（指定值的五倍）之后该对象初始化第一个事件并且每个后续的事件都在 50 秒之后初始化。


DragBehavior 属性

指定系统是否允许在文本框或组合框中执行拖放功能。

语法

object.DragBehavior [= fmDragBehavior]

DragBehavior 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmDragBehavior | 可选。指定是否允许拖放功能。

设置

fmDragBehavior 的设置值有：

常数 | 值 | 描述
fmDragBehaviorDisabled | 0 | 不允许拖放动作（默认值）。
fmDragBehaviorEnabled | 1 | 允许拖放动作。

说明

如果 DragBehavior 属性是允许操作的，那么在文本框或组合框中的拖动将初始化在所选文本上的拖放操作。如果 DragBehavior 是不允许操作的，那么在文本框或组合框中的拖动将选定文本。

组合框的下拉部分既不支持拖放过程，也不支持对该文本内列表项的选择。

对于 Style 属性设置为 fmStyleDropDownList 的组合框，DragBehavior 属性无影响。

注意 可以把 EnterFieldBehavior 属性和 DragBehavior 的作用结合起来以创建大量文本框的样式。


DrawBuffer 属性

指定在编排一个框架所用的屏幕外内存中所设置的象素数。

语法

object.DrawBuffer [= value]

成分 | 描述
object | 必需。有效对象。
value | 在 16,000 到 1,048,576 之间的一个整数，它等于该对象所能处理的屏幕外的最大象素数。

说明

DrawBuffer 属性指定在重画时一次可以画出的最大象素数。对象实际使用的内存量取决于屏幕的显示分辨率。如果 DrawBuffer 的值设置得大，则性能将会减少。仅当几个大图像重叠时大缓冲区才是有利的。

用 Properties 窗口指定 DrawBuffer 的值。


DropButtonStyle 属性

指定在组合框的放置按钮上显示的符号。

语法

object.DropButtonStyle [= fmDropButtonStyle]

DropButtonStyle 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmDropButtonStyle | 可选。指定放置按钮的外观。

设置

fmDropButtonStyle 的设置值有：

常数 | 值 | 描述
fmDropButtonStylePlain | 0 | 显示一个简单的按钮，没有符号。
fmDropButtonStyleArrow | 1 | 显示一个向下的箭头（默认值）。
fmDropButtonStyleEllipsis | 2 | 显示一个省略号 (...)。
fmDropButtonStyleReduce | 3 | 显示一条水平线，如同一个下划线字符。

说明

为了显示列表中的条目，建议使用的设置值是 fmDropButtonStyleArrow。如果想按其他方式使用放置按钮，（如显示一个对话框），则应指定 fmDropButtonStyleEllipsis、fmDropButtonStylePlain 或 fmDropButtonStyleReduce，并应捕获 DropButtonClick 事件。


Enabled 属性

指定一个控件能否接受焦点和响应用户产生的事件。

语法

object.Enabled [= Boolean]

Enabled 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断该对象能否响应用户产生的事件。

设置

Boolean 的设置值有：

值 | 描述
True | 该控件可接受焦点并响应用户产生的事件，而且能通过代码进行访问（默认值）。
False | 用户不能使用鼠标、击键、加速键或热键处理该控件。通常仍可通过编码访问该控件。

说明

用 Enabled 属性可使控件有效或无效。无效的控件显示为浅灰色，有效控件的外观则与此不同。而且，如果控件中显示位图，则当控件变灰时位图也随之变灰。如果图像控件的 Enabled 属性为 False，那么即使该控件外观没有变灰，仍不能初始化事件。

Enabled 和 Locked 属性结合起来能实现如下作用：

  • 如果 Enabled 和 Locked 都为 True，那么该控件在窗体中可以接受焦点并且能正常显示（非浅灰色）。用户可以复制控件中的数据，但不能编辑它。

  • 如果 Enabled 为 True，而 Locked 为 False，那么该控件在窗体中可以接受焦点并且能正常显示。用户可复制和编辑该控件中的数据。

  • 如果 Enabled 为 False 而 Locked 为 True，那么该控件在窗体中不能接收焦点并且是浅灰色的。用户既不能复制也不能编辑控件中的数据。

  • 如果 Enabled 和 Locked 都为 False，那么该控件在窗体中不能接收焦点并且是浅灰色的。用户既不能复制也不能编辑控件中的数据。

可以把 Enabled 和 TabStop 属性的设置值结合起来，以防止用户用 Tab 键选中命令按钮，但仍允许用户单击该按钮。将 TabStop 设置为 False，意味着该命令按钮将不在 Tab 键顺序中出现。但是，如果 Enabled 的属性为 True，只要 TakeFocusOnClick 的设置是 True，用户仍可以单击该命令按钮。

当用户跳格进入有效的多页控件或 TabStrip 时，控件中的第一页或第一个标签将接收这个焦点。如果多页控件的第一页或 TabStrip 的第一个标签无效，则控件中第一个有效的页或标签接收这个焦点。如果多页控件的所有页或 TabStrip 标签都是无效的，那么该控件也是无效的，将不能接收这个焦点。

如果框架是无效的，则它包含的全部控件都是无效的。

单击一个无效的列表框不能初始化 Click 事件。


EnterFieldBehavior 属性

指定进入文本框或组合框时的选择行为。

语法

object.EnterFieldBehavior [= fmEnterFieldBehavior]

EnterFieldBehavior 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmEnterFieldBehavior | 可选。所期望的选择行为。

设置

fmEnterFieldBehavior 的设置值有：

常数 | 值 | 描述
fmEnterFieldBehaviorSelectAll | 0 | 进入控件时选定编辑区域的全部内容（默认）。
fmEnterFieldBehaviorRecallSelection | 1 | 保持不变的选择。实际上，所用的是控件上次激活时起作用的选择。

说明

当用户跳格进入控件，而不是用 SetFocus 方法，使控件接受焦点时，EnterFieldBehavior 属性控制选择文本的方法。若使用 SetFocus 方法，将不会选定控件的内容，而是使插入点出现在控件编辑区的最后一个字符的后面。


EnterKeyBehavior 属性

定义在文本框中按下 Enter 键的结果。

语法

object.EnterKeyBehavior [= Boolean]

EnterKeyBehavior 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。指定按 Enter 键产生的结果。

设置

Boolean 的设置值为：

值 | 描述
True | 按 Enter 键将创建一个新行。
False | 按 Enter 键，将焦点移到 Tab 键顺序的下一个对象（默认）。

说明

EnterKeyBehavior 和 MultiLine 属性是密切相关的。上面所指定的值只适用在 MultiLine 为 True 时。如果 MultiLine 为 False，则不论 EnterKeyBehavior 为何值，按 Enter 键总是把焦点移到 Tab 键顺序的下一个对象。

按 Ctrl+Enter 组合键的作用也取决于 MultiLine 的值。如果 MultiLine 为 True，则不论 EnterKeyBehavior 为何值，按 Ctrl+Enter 组合键都将创建一个新行。如果 MultiLine 为 False，按 Ctrl+Enter 组合键将不起作用。


ForeColor 属性

指定对象的前景色。

语法

object.ForeColor [= Long]

ForeColor 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。一个值或常数，确定对象的前景色。

设置

可以使用任意整数代表有效的颜色；也可以使用带有红、绿、蓝三元色素的 RGB 函数来指定一种颜色。每种色素的值为 0 到 255 间的一个整数。例如，可用整数值 4966415，或红、绿、蓝三元色素的 15，200，75， 来指定青色。

说明

对窗体中的控件使用 ForeColor 属性可以使之易于读取，或者传达某种特定含义。例如，如果用一个文本框报告股票的点数，当值下跌到买入限以下时，可以改变文本的颜色。

对于滚动条或数值调节钮，ForeColor 将设置箭头的颜色。对于框架，ForeColor 将改变题注的颜色。对于 Font 对象，ForeColor 将确定文本的颜色。


GroupName 属性

创建一个互斥的数值调节钮控件组`。

语法

object.GroupName [= String]

GroupName 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效的数值调节钮。
String | 可选。包含数值调节钮的组名。对组中所有按钮使用相同的设置，默认的设置值为一个空字符串。

说明

要创建一个互斥的数值调节钮控件组，可将那些按钮放到窗体上的一个框架中，也可以使用 GroupName 属性。由于下列原因，GroupName 的效率更高：

  • 不必每个组都包含一个框架。不使用框架，可以减少窗体上控件的数目，进而能改进性能和减小窗体的尺寸。

  • 可以设计得更灵活。如果用一个框架来创建组，所有的按钮都必须在框架内。如果需要多个组，就必须每个组包含一个框架。但是如果用 GroupName 创建组，该组就可以包含窗体中任何位置的选项按钮；如果需要多个组，则应为每个组指定一个唯一的名字；仍可在窗体的任何地方放置独立的控件。

  • 可以创建具有透明背景的按钮，用来改善窗体的可视外观。框架不是透明控件。

无论采用哪种方法创建按钮组，单击组中一个按钮都使同组中其他按钮设置为 False。同一容器中所有具有相同 GroupName 的选项按钮是互斥的。可以在两个容器中使用同一个组名，但是这样做将创建两个组（每容器一个），而不是包含两个容器的一个组。

例如，假定一个窗体包含一些选项按钮，还包含一个含有选项按钮的多页控件。多页控件上的选项按钮为一个组，而窗体上的按钮为另一个组。两个组互不影响。改变多页控件上的一个按钮的设置不会影响窗体上的按钮。


Height，Width 属性

对象的高度和宽度，以磅为单位。

语法

object.Height [= Single]

object.Width [= Single]

Height 和 Width 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。指定对象大小的数字表达式。

说明

当移动或改变控件大小时，Height 和 Width 属性将自动更新。如果改变了一个控件的大小，Height 或 Width 属性将保存新的高度或宽度，而 OldHeight 或 OldWidth 属性保存上次的高度和宽度。如果 Left 或 Top 属性的设置小于 0，这个值用于计算控件的高度和宽度，但控件的一部分将在窗体上消失。

若在窗体中移动控件，只有在移动过程中调节了控件的大小，才会使 Height 或 Width 的设置值变化。控件的 Left 和 Top 属性的设置值将发生变化，以反映控件相对于所在窗体的边缘的新位置。

为 Height 或 Width 所赋的值必须大于等于 0。对于多数系统，推荐值的范围是 0 到 +32,767 之间的数值。也可使用更大的值，这取决于所用系统配置。


HelpContextID 属性

HelpContextID 属性将一个自定义 Microsoft Windows 帮助文件中的特定主题与一个指定的控件相关联。

语法

object.HelpContextID [= Long]

HelpContextID 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。正整数，指定与该对象相关联的帮助文件中主题的上下文 ID。0 表示没有帮助主题与该对象相关联（默认）。必须是指定的帮助文件中的一个有效的上下文 ID。

说明

窗体运行时，由 HelpContextID 属性所标识的主题是有效的。要显示该主题，用户必须选中该控件或者把焦点设置到该控件，然后按 F1 键。

HelpContextID 属性对自定义帮助文件中一个主题进行引用，这个被创建的帮助文件用于描述该窗体或应用程序。在 Visual Basic 中，自定义的帮助文件是工程的一个属性。


HideSelection 属性

指定当控件没有焦点时被选定的文本是否保持突出显示。

语法

object.HideSelection [= Boolean]

HideSelection 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断即使控件没有焦点时，选定的文本是否保持突出显示。

设置

Boolean 的设置值如下：

值 | 描述
True | 选定文本不突出显示，除非控件有焦点（默认）。
False | 选定文本总是突出显示。

说明

当其他窗体或对话框接受焦点时（比如在拼写检查过程中），可以用 HideSelection 属性保持突出显示的文本。


IMEMode 属性

为控件指定输入法编辑器 (IME) 的默认的运行时间模式。这个属性只用于为远东地区编写的应用程序，在其他应用程序中被忽略。

语法

object.IMEMode [= fmIMEMode]

IMEMode 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmIMEMode | 可选。输入法编辑器 (IME) 的模式。

设置

fmIMEMode 设置值如下：

常数 | 值 | 描述
fmIMEModeNoOp | 0 | 不控制 IME （默认）。
fmIMEModeOn | 1 | IME 打开。
fmIMEModeOff | 2 | IME 关闭。英语模式。
fmIMEModeDisable | 3 | IME 关闭。用户不能通过键盘打开 IME。
fmIMEModeHiragana | 4 | IME 打开，具有全角平假名的模式。
fmIMEModeKatakana | 5 | IME 打开，具有全角片假名模式。
fmIMEModeKatakanaHalf | 6 | IME 打开，具有半角片假名模式。
fmIMEModeAlphaFull | 7 | IME 打开，具有全角字母数字模式。
fmIMEModeAlphaSng | 8 | IME 打开，具有半角字母数字模式。
fmIMEModeHangulFull | 9 | IME 打开，具有全角朝鲜文模式。
fmIMEModeHangul | 10 | IME 打开，具有半角朝鲜文模式。

fmIMEModeNoOp 设置值表明当控件在运行时间接受焦点时，IME 的模式不发生改变。对任何其他值，当控件在运行时间接受焦点时，IME 的模式被设置为由 IMEMode 属性所指定的值。

说明

有两种方法设置 IME 的模式。一种是通过 IME 的工具栏。另一种是用控件的 IMEMode 属性，它能设置或返回 IME 的当前模式。这个属性允许通过编码对 IME 进行动态控制。

下例描述 IMEMode 属性如何同 IME 的工具栏进行交互。假定已经设计了一个带有 TextBox1 和 CheckBox1 的窗体。TextBox1.IMEMode 已经设置为 0，CheckBox1.IMEMode 已经设置为 1。在设计模式期间已使用 IME 工具栏把 IME 设置为模式 2。

当要运行该窗体时，IME 开始是在模式 2。若单击 TextBox1，IME 模式不变，因为该控件的 IMEMode 为 0。若单击 CheckBox1，IME 变为模式 1，因为该控件的 IMEMode 为 1。若再次单击 TextBox1，则 IME 保持在模式 1（IMEMode 为 0，因此 IME 保留上一次的设置）。

但是，也可以忽略 IMEMode。例如，假定按照 IMEMode 对复选框的定义，单击 CheckBox1 并且 IME 进入模式 1。如果然后又用 IME 工具栏按模式 3 设置 IME，那么任何时候单击该控件时，IME 都将设置为模式 3。这样做并未改变该属性的值，只是在下次运行该窗体之前，一直忽略该属性。


Index 属性

在 Tabs 集合中是 Tab 对象的位置，或者在 Pages 集合中 Page 对象的位置。

语法

object.Index [= Integer]

Index 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Integer | 可选。当前选定的 Tab 对象的索引。

说明

Index 属性指定了标签出现的顺序。改变 Index 的值将从视觉上改变多页控件中页的顺序或改变 TabStrip 中的标签顺序。第一页或第一个标签的索引值是 0，第二页或第二个标签的索引值是 1，依此类推。

在多页控件中，Index 既引用页也引用该页标签。在 TabStrip 中，Index 只引用标签。


InsideHeight，InsideWidth 属性

InsideHeight 返回窗体中客户区的高度，以磅为单位。InsideWidth 返回窗体中客户区的宽度，以磅为单位。

语法

object.InsideHeight

object.InsideWidth

InsideHeight 和 InsideWidth 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

说明

InsideHeight 和 InsideWidth 属性是只读的。如果该区含有滚动条，则返回的值不包括滚动条的高度和宽度。


IntegralHeight 属性

指定列表框或文本框是显示列表中全部文本行还是显示部分行。

语法

object.IntegralHeight [= Boolean]

IntegralHeight 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。列表是否显示部分文本行。

设置

Boolean 的设置值有：

值 | 描述
True | 列表调整自身大小以便显示完整的条目（默认值）。
False | 即使因该条目太高而无法完整显示，列表也不调整自身大小。

说明

IntegralHeight 属性与列表的高度有关，正如 AutoSize 属性与列表的宽度有关。

如果 IntegralHeight 为 True，则该列表框在需要显示所有行时将自动调整大小；如果为 False，则列表保持固定的大小；如果条目比列表中的可用空间更高，则整个条目都不显示。


KeepScrollBarsVisible 属性

规定当不需要时是否保持滚动条的可见性。

语法

object.KeepScrollBarsVisible [= fmScrollBars]

KeepScrollBarsVisible 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmScrollBars | 可选。滚动条显示的位置。

设置

fmScrollBars 的设置值为：

常数 | 值 | 描述
fmScrollBarsNone | 0 | 不显示滚动条。
fmScrollBarsHorizontal | 1 | 显示水平滚动条。
fmScrollBarsVertical | 2 | 显示垂直滚动条。
fmScrollBarsBoth | 3 | 水平和垂直滚动条都显示（默认）。

说明

如果可视的区域足够大，能显示对象（如一个 Page 对象或一个窗体）上的所有控件，，就不需要滚动条。KeepScrollBarsVisible 属性可决定当不需要时是否保持滚动条可见。

如果滚动条在不需要时仍是可见的，它们将按正常尺寸出现，而且滚动框将填满滚动条的整个宽度和高度。


LargeChange 属性

指定单击滚动框和滚动箭头之间的区域时引起的移动量。

语法

object.LargeChange [= Long]

LargeChange 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。整数，指定 Value 属性的改变量。

说明

LargeChange 属性只适用于滚动条。它不适用于如文本框或下拉式组合框之类的其他控件中的滚动条。

LargeChange 的值是当单击滚动框和滚动箭头之间的区域时滚动条的 Value 属性的改变量。移动的方向总是向着单击的地方。例如，单击水平滚动条中滚动框的左面，将使滚动框向左移动；单击垂直滚动条中滚动框的上部，将使滚动框向上移动。

LargeChange 没有单位。任何整数都是它的有效设置。推荐值的范围是 -32,767 到 +32,767 之间的数值，并且该值必须介于滚动条的 Max 和 Min 属性值之间。


LayoutEffect 属性

指定在改变布局期间控件是否移动。

语法

object.LayoutEffect

LayoutEffect 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

返回值

LayoutEffect属性返回值是：

常数 | 值 | 描述
fmLayoutEffectNone | 0 | 控件不移动。
fmLayoutEffectInitiate | 1 | 控件移动。

说明

LayoutEffect 属性是只读的，并且仅在 Layout 事件中可用。如果 Layout 参数为 True，则 Layout 事件用 Move 方法初始化。

当改变控件的 Left 、Top、Height 或 Width 属性的设置值时，不初始化 Layout 事件。

Layout 事件为移动操作涉及到的任何控件设置 LayoutEffect 值。例如，如果移动一个控件组，则将设置每个控件的 LayoutEffect 值。


Left，Top 属性

控件与所在窗体的左边或顶边之间的距离。

语法

object.Left [= Single]

object.Top [= Single]

Left 和 Top 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。指定对象坐标的数字表达式。

设置

Left 或 Top 属性的设置为 0，则将控件的边放在其所在容器的左边或顶边处。

说明

对于多数系统，Left 和 Top 推荐值的范围是 -32,767 到 +32,767 之间的数值。也可采用其他值，这取决于所用系统的配置。对于组合框，Left 和 Top 的值适用于该控件的文本部分，但不适用于列表部分。当移动或改变一个控件的大小时，其新的 Left 设置将自动输入该属性的工作表中。当打印一个窗体时，该控件的水平或垂直位置由其 Left 或 Top 的设置值所决定。


LineCount 属性

返回文本框中或组合框中文本行的行数。

语法

object.LineCount

LineCount 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

说明

LineCount 属性是只读的。

注意 组合框将只有一行。


List 属性

返回或设置列表框或组合框的列表条目数。

语法

object.List( row, column ) [= Variant]

List 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
row | 必需。整数，取值范围为 0 到列表条目数减 1 之间的数值。
column | 必需。整数，取值范围为 0 到总列数减 1 之间的数值。
Variant | 可选。列表框或组合框中指定条目的内容。

设置

行和列的编号从 0 开始。即列表中第一行的行号为 0，第一列的列号为 0。第二行或列的编号为 1，以此类推。

说明

List 属性与 ListCount 和 ListIndex 属性一起使用。用 List 访问列表的条目。列表就是变化的数组；列表中每个条目都有一个行号和一个列号。

初始化时，组合框和列表框包含一个空的列表。

注意 可用 AddItem 方法来指定需要在组合框或列表框中显示的条目。要删除条目，可用 RemoveItem 方法。

可用 List 把值的完整的二维数组复制到一个控件上。可用 AddItem 加载一个一维数组或加载单个元素。


ListCount 属性

返回控件的列表中的条目数。

语法

object.ListCount

ListCount 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

说明

ListCount 属性是只读的。ListCount 是可以在列表框中滚动的行数。ListRows 是一次可显示的最大值。ListCount 总是比 ListIndex 属性的最大值大 1，因为索引的数值是从 0 开始而条目的计数是从 1 开始。如果没有选中条目，则 ListCount 为 0，而 ListIndex 为 -1。


ListIndex 属性

指定当前选中的列表框或组合框条目。

语法

object.ListIndex [= Variant]

ListIndex 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。控件中当前被选的条目。

说明

ListIndex 属性包含列表中被选行的索引。ListIndex 的取值范围为 －1 到列表总行数减 1（即，ListCount - 1）之间的数值。当用户没有选中行时，ListIndex 返回 -1。当用户在列表框或组合框中选中一行时，系统将设置 ListIndex 值。列表中第一行的 ListIndex 值是 0，第二行的 ListIndex 值是 1，依此类推。

注意 如果用 MultiSelect 属性创建一个允许多重选择的列表框，那么列表框的 Selected 属性（而不是 ListIndex 属性）将标识被选中的行。Selected 属性是一个数组，其中值的个数与列表框中的行数相同。对于列表框中的每一行，如果该行被选中，则 Selected 为 True，否则为 False。在一个允许多重选择的列表框中，ListIndex 返回具有焦点行的索引，而不论当前该行是否被选中。

将 BoundColumn 属性的值设置为 0，使组合框或列表框中的 ListIndex 值也可使用。如果 BoundColumn 为 0，连接到组合框或列表框的支持数据源将包含与 ListIndex 相同的列表索引值。


ListRows 属性

指定列表中显示的最大行数。

语法

object.ListRows [= Long]

ListRows 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。用来表明最大行数的整数。默认值为 8。

说明

如果列表中的条目数超出 ListRows 属性的值，则将在组合框的列表框部分的右边出现一个滚动条。


ListStyle 属性

规定列表框或组合框中的列表的外观。

语法

object.ListStyle [= fmListStyle]

ListStyle 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmListStyle | 可选。列表的可视风格。

设置

fmListStyle 的设置值有：

常数 | 值 | 描述
fmListStylePlain | 0 | 外观与常规的列表框相似，条目的背景为高亮。
fmListStyleOption | 1 | 显示选项按钮，或显示用于多重选择列表的复选框（默认）。当用户选定组中的条目时，与该条目相关的选项按钮即被选中，而该组其他条目的选项按钮则被取消选择。

说明

ListStyle 属性可用来改变列表框或组合框的可视外观。通过一种不同于 fmListStylePlain 的设置，可以将任意控件的内容作为一组单独项目演示，每个项目都包含一个可视记号用以表明它是否被选中。

如果控件支持单一选择（MultiSelect 属性被设置为 mMultiSelectSingle），则可按下组中的一个按钮。如果控件支持多重选择，则可以按下组中两个或更多的按钮。


ListWidth 属性

指定组合框中列表的宽度。

语法

object.ListWidth [= Variant]

ListWidth 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。列表的宽度。值为 0 时，该列表与组合框同宽。默认值是使该列表与控件的文本部分宽度相同。

说明

若要显示一个多列的列表，应输入一个使列表框的宽度足够装下所有列的值。

提示 当设计组合框时，要确保留出足够的地方以显示数据以及供一个垂直滚动条使用。


Locked 属性

指定一个控件能否被编辑。

语法

object.Locked [= Boolean]

Locked 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。控件能否被编辑。

设置

Boolean 的设置值如下：

值 | 描述
True | 不能编辑该值。
False | 可以编辑该值（默认）。

说明

当一个控件被锁定并有效时，它仍然可以初始化事件且仍能接受焦点。


MatchEntry 属性

返回或设置一个值，用来表明列表框或组合框如何按用户键入的内容来搜索它的列表。

语法

object.MatchEntry [= fmMatchEntry]

MatchEntry 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
fmMatchEntry | 可选。匹配列表中的条目的规则。

设置

fmMatchEntry 的设置值如下：

常数 | 值 | 描述
fmMatchEntryFirstLetter | 0 | 基本匹配。控件搜索以输入的字符开头的下一条条目。反复输入相同的字母，将在以该字母开头的所有条目中循环。
fmMatchEntryComplete | 1 | 扩充匹配。每键入一个字符，控件就搜索能与全部已输入字符相匹配的条目（默认）。
fmMatchEntryNone | 2 | 不进行匹配。

说明

MatchEntry 属性在列表框或组合框的 TextColumn 属性中搜索条目。

为找到输入项的匹配条目，控件将搜索由 TextColumn 所标识的列。找到一个匹配条目时，就选中包含该匹配条目的行，显示该列的内容，并且它的 BoundColumn 属性的内容变为该控件的值。如果匹配是单值的，则初始化 Click 事件。

如果用户键入的字符序列只与列表中的一条记录精确匹配，控件就初始化 Click 事件。在用户键入字符时，输入项将会与该列表的当前行及下一行进行比较。若输入项只与当前行匹配，则匹配是单值性的。

在 Microsoft 窗体中，不论列表是否排序，搜索均按上述方式执行。这意味着控件是基于列表中条目的顺序来查找与输入项相匹配的第一个条目。例如，对于下列列表，输入“abc”或“bc”都将初始化 Click 事件：

abcde
bcdef
abcxyz
bchij

请注意：在上述两种情况下，匹配项都不是唯一的，但是，因为相邻条目明显不同，因此控件可将该匹配条目解释为是单值的，并初始化 Click 事件。


MatchFound 属性

表明输入到组合框的文本是否与列表中的某个条目相匹配。

语法

object.MatchFound

MatchFound 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。

返回值

MatchFound 属性的返回值为：

值 描述

True | Value 属性的内容与该列表记录之一相匹配。
False | Value 的内容不与该列表中的任何记录相匹配（默认）。

说明

MatchFound 属性是只读的。当 MatchEntry 属性设置为 fmMatchEntryNone 时，不能使用该属性。


MatchRequired 属性

指定输入组合框文本部分的值是否必须与该控件现有列表中的条目相匹配。虽然用户可键入不匹配的值，但直到键入一个匹配的值才能退出该控件。

语法

object.MatchRequired [= Boolean]

MatchRequired 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。输入的文本是否必须与列表中现有的条目匹配。

设置

Boolean的设置值为：

值 | 描述
True | 输入的文本必须与列表中现有的条目匹配。
False | 输入的文本可以不同于现有列表中的条目（默认）。

说明

如果 MatchRequired 属性为 True，那么除非用户输入与现有列表中的条目匹配的文本，否则不能退出组合框。MatchRequired 将要求用户选择一个已有的条目，以此来保持列表的完整性。

注意 不是所有容器都执行该属性。


Max，Min 属性

规定滚动条或数值调节钮的 Value 属性可接收的最大值和最小值。

语法

object.Max [= Long]

object.Min [= Long]

Max 和 Min 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。数值表达式，指定 Value 属性的最大设置值或最小设置值。

说明

单击数值调节钮或移动滚动条中的滚动框可改变控件的 Value 属性。

Max 属性的值与垂直滚动条的最低位置或水平滚动条的最右位置相对应。Min 属性的值与垂直滚动条的最高位置或水平滚动条的最左位置相对应。

该属性的设置值可以是任意整数。建议取值范围为 -32,767 到 +32,767。默认值为 1。

注意 Min 和 Max 是指位置，而不是滚动条上的相对值。也就是说，Max 的值有可能小于 Min 的值。此时，向 Max（底）位置移动表示减少 Value 值，向 Min（顶）位置移动表示增加 Value 值。


MaxLength 属性

规定用户可以在文本框或组合框中输入的最多字符数。

语法

object.MaxLength [= Long]

MaxLength 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。整数，表明所允许的字符数。

说明

若将 MaxLength 属性设置为 0，表明只要内存允许则没有限制。


MouseIcon属性

为对象指定一个自定义的图标。

语法

object.MouseIcon = LoadPicture( pathname )

MouseIcon 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
pathname | 必需。字符串表达式，指定包含自定义图标的文件的路径和文件名。

说明

当 MousePointer 属性设置为 99 时，MouseIcon 属性有效。对象的鼠标图标是当用户移动鼠标经过该对象时出现的图像。

可给 MouseIcon 属性指定一个图片，或用 LoadPicture 函数从文件中加载图片的方法，为鼠标指针定义图像。


MousePointer 属性

指定当用户把鼠标放到特定对象上时，所显示鼠标指针的类型。

语法

object.MousePointer [= fmMousePointer]

MousePointer 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmMousePointer | 可选。所需鼠标指针的形状。

设置

fmMousePointer 的设置值为：

常数 | 值 | 描述
fmMousePointerDefault | 0 | 标准指针。根据对象来决定指针的图像（默认）。
fmMousePointerArrow | 1 | 箭头。
fmMousePointerCross | 2 | 十字线指针。
fmMousePointerIBeam | 3 | I 形标。
fmMousePointerSizeNESW | 6 | 斜下的双箭头。
fmMousePointerSizeNS | 7 | 南北向的双箭头。
fmMousePointerSizeNWSE | 8 | 斜上的双箭头。
fmMousePointerSizeWE | 9 | 东西向的双箭头。
fmMousePointerUpArrow | 10 | 上箭头。
fmMousePointerHourglass | 11 | 沙漏。
fmMousePointerNoDrop | 12 | 在被拖动的对象上有 “Not”符号（有一条斜线的圆）。表明是无效的放置目标。
fmMousePointerAppStarting | 13 | 带沙漏的箭头。
fmMousePointerHelp | 14 | 带问号的箭头。
fmMousePointerSizeAll | 15 | 调整所有尺寸的光标（四向箭头）。
fmMousePointerCustom | 99 | 使用由 MouseIcon 属性指定的图标。

说明

用 MousePointer 属性，可表明鼠标掠过窗体控件时其功能的变化。例如，可用沙漏 (11) 的设置表示用户必须等待一个过程或操作的完成。

有些图标会因系统设置的不同而不同。例如与桌面主题相关的图标。


MultiLine 属性

规定控件能否接受和显示多行文本。

语法

object.MultiLine [= Boolean]

MultiLine 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。控件是否支持多行文本。

设置

Boolean 的设置值为：

值 | 描述
True | 以多行显示文本（默认）。
False | 不多行显示文本。

说明

多行文本框允许绝对的行中断，并调整行数以适应所含文本的数量。如果需要，一个多行控件可以有垂直滚动条。

单行文本框不允许绝对的行中断并且没有垂直滚动条。

单行控件忽略 WordWrap 属性的值。

注意 如果将多行文本框的 MultiLine 改变为 False，则文本框的所有字符都将合并为一行，包括非打印字符（如，回车和换行）。


MultiRow 属性

指定控件是否有多行标签。

语法

object.MultiRow [= Boolean]

MultiRow 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。控件是否有多行标签。

设置

Boolean 的设置值为：

值 | 描述
True | 允许多行标签。
False | 将标签限制为单行（默认）。

说明

标签的宽度和数量决定行数。改变控件的大小，行数也随之变化。这就允许开发者重新调整控件的大小并确保标签换行以适合该控件。如果 MultiRow 属性为 False，当标签宽度超出控件的宽度时将被截断。

如果 MultiRow 为 False 并且标签被截断，在 TabStrip 中会有一个小的滚动条允许滚动到其他标签或其他页。


MultiSelect 属性

表明对象是否允许多项选择。

语法

object.MultiSelect [= fmMultiSelect]

MultiSelect 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmMultiSelect | 可选。控件所用的选择方式。

设置

fmMultiSelect 的设置值为：

常数 | 值 | 描述
fmMultiSelectSingle | 0 | 只可选择一个条目（默认）。
fmMultiSelectMulti | 1 | 按空格键或单击鼠标以选定列表中一个条目或取消选定。
fmMultiSelectExtended | 2 | 按 Shift 键并单击鼠标，或按 Shift 键的同时按一个箭头键，将所选条目由前一项扩展到当前项。按 Ctrl 键的同时单击鼠标可选定或取消选定。

说明

当 MultiSelect 属性设置为 Extended 或 Simple 时，必须用列表框的 Selected 属性确定选定的条目。而且，控件的 Value 属性总是 Null。

ListIndex 属性用键盘焦点返回行的索引。


Name 属性

指定一个控件或对象的名称，或与 Font 对象相关的字体的名称。

语法

对于字体
Font.Name [= String]

对于所有其他控件和对象
object.Name [= String]

Name 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。要给字体或控件指定的名称。

设置

给 Name 指定字符串的准则（例如名字的最大长度）随应用程序的不同而不同。

说明

对于对象，Name 的默认值由对象的类名后跟一个整数组成。例如，放置在窗体上的第一个文本框的默认名是 TextBox1，第二个文本框的默认名是 TextBox2。

可以在控件属性表中为控件设置 Name 属性，或用程序语句为在运行时间添加的控件设置 Name 属性。若在设计时间添加了一个控件，则不能在运行时间修改其 Name 属性。

在设计时间添加到窗体中的每个控件都必须有唯一的名称。

对于 Font 对象，Name 将标识在控件、对象或窗体的文本部分所使用的特定的字样。屏幕上所显示的字体也许与打印的结果不同，这取决于计算机和打印机。如果选择了一种系统不能显示或未安装的字体，Windows 将用一种相似的字体取代。


Object 属性

当新控件具有与标准属性或方法同名的属性或方法时，则覆盖相应的标准属性或方法。

语法

object.Object[.property |.method]

Object 属性的语法包括下列成分：

成分 | 描述
object | 必需。添加到 Microsoft 窗体“工具箱”中的对象的名称。
property | 可选。与标准 Microsoft 窗体的属性同名的属性。
method | 可选。与标准 Microsoft 窗体的方法同名的方法。

说明

Object是只读的。

如果在 Microsoft 窗体“工具箱”中添加一个新控件，加入控件的属性或方法有可能与标准 Microsoft 窗体的属性或方法同名。Object 属性使您可以使用添加的控件的属性或方法，而不是标准的属性或方法。


OldHeight，OldWidth 属性

返回控件先前的高度或宽度，以磅为单位。

语法

object.OldHeight

object.OldWidth

OldHeight 和 OldWidth 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。

说明

OldHeight 和 OldWidth 属性是只读的。

当移动或改变控件的大小时，OldHeight 和 OldWidth 属性将自动更新。如果改变了控件的大小，Height 和 Width 属性存储新的高度，而 OldHeight 和 OldWidth 存储先前的高度。

该属性只在 Layout 事件中有效。


OldLeft，OldTop 属性

返回控件先前位置与所在窗体的左边或顶边之间的距离，以磅为单位。

语法

object.OldLeft

object.OldTop

OldLeft 和 OldTop 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。

说明

OldLeft 和 OldTop 属性是只读的。

当移动或改变控件大小时，OldLeft 和 OldTop 属性将自动更新。如果移动一个控件，Left 和 Top 属性将存储控件与其容器左边之间的新距离，OldLeft 和 OldTop 存储原来的 Left 值。

OldLeft 和 OldTop 属性只在 Layout 事件中有效。


Orientation 属性

规定数值调节钮或滚动条是垂直方向还是水平方向。

语法

object.Orientation [= fmOrientation]

Orientation 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmOrientation | 可选。控件的定位方向。

设置

fmOrientation 的设置值为：

常数 | 值 | 描述
fmOrientationAuto | -1 | 根据控件的大小自动定向（默认）。
fmOrientationVertical | 0 | 控件为垂直方向。
fmOrientationHorizontal | 1 | 控件为水平方向。

说明

如果指定为自动定向，则由控件的高度或宽度来决定水平或垂直显示。例如，如果控件的宽度大于高度，控件水平显示；如果高度大于宽度则垂直显示。


Parent 属性

返回包含指定控件、对象或集合的窗体、对象或集合的名字。

语法

object.Parent

Parent 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。

说明

Parent 属性是只读的。

可用 Parent 属性访问一个对象的父体的属性、方法或控件。

在以参数方式传递对象的应用程序中该属性是很有用的。例如，可以给模块的通用过程传递一控件变量，用 Parent 属性访问其父窗体。


PasswordChar 属性

指定在文本框中是显示占位符还是显示实际输入的字符。

语法

object.PasswordChar [= String]

PasswordChar 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。字符串表达式，指定占位符。

说明

可以用 PasswordChar 属性（例如口令或密码）保护机密的信息。PasswordChar 的值是显示在控件上的字符，而不是用户实际键入的字符。如果没有指定该字符，控件将显示用户实际键入的字符。


Picture 属性

指定显示在对象上的位图。

语法

object.Picture = LoadPicture( pathname )

Picture 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
pathname | 必需。一个图片文件的完整路径。

说明

设计窗体时，可用控件的属性页为 Picture 属性指定位图。运行窗体时，则必须使用 LoadPicture 函数为 Picture 属性指定位图。

要删除为控件指定的图片，请在属性页中选中 Picture 属性的值，然后按下 Delete 键。按 Backspace 键不能删除图片。

注意 对有题注的控件，用 PicturePosition 属性指定图片在对象中的显示位置；用 PictureSizeMode 属性确定图片如何填充对象。

透明的图片有时会显得模糊。如果不喜欢，可在支持不透明图像的控件中显示图片。图像控件和多页控件支持不透明图像。


PictureAlignment 属性

指定一个背景图片的位置。

语法

object.PictureAlignment [= fmPictureAlignment]

PictureAlignment 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmPictureAlignment | 可选。图片与控件对齐的位置。

设置

fmPictureAlignment 的设置值为：

常数 | 值 | 描述
fmPictureAlignmentTopLeft | 0 | 左上角。
fmPictureAlignmentTopRight | 1 | 右上角。
fmPictureAlignmentCenter | 2 | 中心。
fmPictureAlignmentBottomLeft | 3 | 左下角。
fmPictureAlignmentBottomRight | 4 | 右下角。

说明

PictureAlignment 属性表明图片的哪个角与使用该图片的控件或容器相应的角一致。

例如，将 PictureAlignment 设置为 fmPictureAlignmentTopLeft，表示图片的左上角与控件或容器的左上角一致。将 PictureAlignment 设置为 fmPictureAlignmentCenter，则把图片放在相对于控件或容器的高和宽的中间位置。

如果在控件或容器中平铺图像，PIctureAlignment 的设置值将影响平铺模式。例如，如果 PictureAlignment 设置为 fmPictureAlignmentUpperLeft，图像的第一个副本将位于控件或容器的左上角，其他副本则从左到右逐行平铺。如果 PictureAlignment 设置为 fmPictureAlignmentCenter，第一个副本将位于控件或容器的中心，其他副本则位于它的左边和右边，填满该行；也添加其余行来填充控件或容器。

注意 将 PictureSizeMode 属性设置为 fmSizeModeStretch，将忽略 PictureAlignmen 属性。将 PictureSizeMode 属性设置为 fmSizeModeStretch 时，图片填满整个控件或容器。


PicturePosition 属性

指定图片与其题注的的相对位置。

语法

object.PicturePosition [= fmPicturePosition]

PicturePosition 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmPicturePosition | 可选。图片与所在容器的对齐方式。

设置

fmPicturePosition 的设置值为：

常数 | 值 | 描述
fmPicturePositionLeftTop | 0 | 图片在题注的左边显示；题注与图片顶端对齐。
fmPicturePositionLeftCenter | 1 | 图片在题注的左边显示；题注与图片中间对齐。
fmPicturePositionLeftBottom | 2 | 图片在题注的左边显示。题注与图片的底边对齐。
fmPicturePositionRightTop | 3 | 图片在题注的右边显示。题注与图片顶端对齐。
fmPicturePositionRightCenter | 4 | 图片在题注的右边显示。题注与图片中间对齐。
fmPicturePositionRightBottom | 5 | 图片在题注的右边显示。题注与图片的底端对齐。
fmPicturePositionAboveLeft | 6 | 图片在题注的上边显示。题注与图片左边对齐。
fmPicturePositionAboveCenter | 7 | 图片在题注的上边显示。题注在图片下面中间位置（默认）。
fmPicturePositionAboveRight | 8 | 图片在题注的上边显示。题注与图片右边对齐。
fmPicturePositionBelowLeft | 9 | 图片在题注的下边显示。题注与图片左边对齐。
fmPicturePositionBelowCenter | 10 | 图片在题注的下边显示。题注在图片上面中间位置。
fmPicturePositionBelowRight | 11 | 图片在题注的左边显示。题注与图片右边对齐。
fmPicturePositionCenter | 12 | 图片在控件的中间显示。题注在图片上的水平和垂直方向的中心。

说明

图片和题注，作为一个单元，位于控件的中心。如果没有题注，图片相对于控件的中心定位。

如果 Picture 属性没有指定图片，该属性被忽略。


PictureSizeMode 属性

指定在控件、窗体或页面上显示背景图片的方式。

语法

object.PictureSizeMode [= fmPictureSizeMode]

PictureSizeMode 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmPictureSizeMode | 可选。当图片与包含它的窗体或页面大小不等时，应执行的操作。

设置

fmPictureSizeMode 的设置值为：

常数 | 值 | 描述
fmPictureSizeModeClip | 0 | 裁掉图片中比窗体或页面大的部分（默认）。
fmPictureSizeModeStretch | 1 | 扩展图片使其填满窗体或页面。该设置值使图片在垂直和水平方向都发生变形。
fmPictureSizeModeZoom | 3 | 放大图片，但图片在水平和垂直方向上都不变形。

说明

fmPictureSizeModeClip 设置表明：希望以原始的大小和比例显示图片。如果窗体或页面比图片小，该设置将只显示图片在窗体或页面内的那部分。

fmPictureSizeModeStretch 和 fmPictureSizeModeZoom 设置都放大图像，但 fmPictureSizeModeStretch 引起变形。fmPictureSizeModeStretch 设置值在水平和垂直方向放大图片，直至图片到达容器或控件的相应的边界为止。fmPictureSizeModeZoom 设置值放大图片，直至图片到达容器或控件垂直或水平边界为止；如果图片先到达水平边界，到垂直边界的剩余距离保持空白；如果图片先到达垂直边界，到水平边界的剩余距离保持空白。


PictureTiling 属性

允许在窗体或页面中平铺图片。

语法

object.PictureTiling [= Boolean]

PictureTiling 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。图片与背景重叠时是否重复显示。

设置

Boolean 的设置值为：

值 | 描述
True | 图片在背景上平铺。
False | 图片不在背景上平铺（默认）。

说明

如果图片小于所在的窗体或页面，则可以在窗体或页面中平铺图片。

平铺的模式取决于当前 PictureAlignment 和 PictureSizeMode 属性的设置。例如，如果 PictureAlignment 设置为 fmPictureAlignmentTopLeft，平铺模式从左上方开始横跨窗体或页面，并沿窗体或页的顶点而下。如果 PictureSizeMode 设置为 fmPictureSizeModeClip，且上一次平铺没有完全容纳在窗体或页面中，平铺模式将对上一次平铺进行剪裁。


ProportionalThumb 属性

描述滚动框的大小是与滚动区成比例还是固定。

语法

object.ProportionalThumb [= Boolean]

ProportionalThumb 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。滚动框是成比例还是固定。

设置

Boolean 的设置值为：

值 | 描述
True | 滚动框与滚动区的大小成比例（默认）。
False | 滚动框大小固定。

说明

一个成比例的滚动框用图片表示在窗口可见的对象的百分比。例如，如果对象的 75% 可见，在滚动条中滚动框覆盖 3/4 滚动区。

如果滚动框大小固定，系统根据滚动条的高度和宽度确定其大小。


RightToLeft 属性（Microsoft 窗体）

指示给定窗体是否支持双向特性。

语法

expression.RightToLeft [=value]

说明

RightToLeft 是放置指定控件的 Microsoft Forms 2.0 窗体的新属性，而不是控件的属性。请注意，RightToLeft 既影响窗体又可影响该窗体上所放置的任何控件。下表中列出了该属性可能的两种设置。

设置 | 值
False | 0
True | 1

当窗体的 RightToLeft 属性设置为 True 时，能够显示双向特性的 Microsoft Forms 2.0 控件即会显示此特性。当此属性设为 False 时，窗体和控件将不显示双向特性。RightToLeft 属性的双向功能在下表中列出。

Microsoft Forms 2.0 组件 | RightToLeft = True 时
所有窗体和控件 | 垂直滚动条（如果存在）将置于窗体或控件的左边。水平滚动条的初始翻阅位置位于最右侧，并显示最右侧的信息区。
窗体 | 标题栏的题注右对齐。
框架控件 | 题注将置于框架的右上角。
TabStrip 控件和 多页控件 | 按照 TabOrientation 设置，选项卡将从右到左显示（即从控件的右边界开始排列第一个选项卡）。 TabOrientation = Top 时，选项卡将沿着控件的顶边从右到左显示。 TabOrientation = Bottom 时，选项卡沿着控件的底边从右到左显示。 注意 如果所有选项卡的总宽度超过了控件的宽度，并且 MultiRow = False，则这些选项卡将按照 MultiRow = True 的情况从右到左显示。

要点 如果将 Microsoft Forms 2.0 控件添至非 Microsoft Forms 2.0 窗体的容器表面（例如，直接向 Arabic Word 文档中添加 TabStrip 控件），则控件行为将与把容器的 RightToLeft 属性设置为 False 时相同。

注意 本主题中对 RightToLeft 属性的描述已取代原来帮助中有关 VerticalScrollBarSide 属性的介绍。请记住，虽然可以在 Visual Basic for Applications 的语句中引用 VerticalScrollBarSide，但是此属性无效。


RowSource 属性

指定为组合框或列表框提供列表的来源。

语法

object.RowSource [= String]

RowSource 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。组合框或列表框列表的来源。

说明

RowSource 属性可以接受 Microsoft Excel 的工作表区域。


ScrollBars 属性

指定一个控件、窗体或页面是否有垂直或水平滚动条，或两者都有。

语法

object.ScrollBars [= fmScrollBars]

ScrollBars 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmScrollBars | 可选。滚动条的显示位置。

设置

fmScrollBars 的设置值为：

常数 | 值 | 描述
fmScrollBarsNone | 0 | 不显示滚动条（默认）。
fmScrollBarsHorizontal | 1 | 显示水平滚动条。
fmScrollBarsVertical | 2 | 显示垂直滚动条。
fmScrollBarsBoth | 3 | 垂直和水平滚动条都显示。

说明

如果 KeepScrollBarsVisible 属性为 True，则无论对象内容是否恰好容纳在对象边框内，窗体或页面中的任何滚动条总是可见的。

如果滚动条可见，滚动条把滚动框限制在自身的可见区域。它还可以根据需要改变滚动位置，以便保持整个滚动条的可见性。当 ScrollBars 属性值、滚动范围或可见范围发生变化时，滚动条的范围发生变化。

如果滚动条不可见，可以将其滚动位置设置为任何值。负值和大于滚动范围的值都是有效的。

对于一个单行控件，用 ScrollBars 和 AutoSize 属性可以显示水平滚动条。滚动条的隐藏或显示遵循下列规则：

  1. 当 ScrollBars 设置为 fmScrollBarsNone 时，不显示滚动条。

  2. 当 ScrollBars 设置为 fmScrollBarsHorizontal 或 fmScrollBarsBoth 时，如果文本长度大于编辑区，并且控件有足够的空间在其编辑区下边包含滚动条，则控件显示一个水平滚动条。

  3. 当 AutoSize 是 True 时，控件将放大自己以适应增加的滚动条，除非控件已处于或接近其最大尺寸。

对于一个多行文本框，可以使用 ScrollBars、 WordWrap 和 AutoSize 属性显示滚动条。滚动条的隐藏或显示遵循下列规则：

  1. 当 ScrollBars 设置为 fmScrollBarsNone 时，不显示滚动条。

  2. 当 ScrollBars 设置为 fmScrollBarsVertical 或 fmScrollBarsBoth 时，如果文本长度大于编辑区，并且控件有足够的空间在其编辑区右边包含滚动条，则控件显示一个垂直滚动条。

  3. 当 WordWrap 为 True 时，多行控件不显示水平滚动条。多数多行控件不使用水平滚动条。

  4. 如果下列情况同时发生，则多行控件可以显示水平滚动条：
    • 编辑区含有比编辑区宽度长的单词。

    • 控件使水平滚动条有效。

    • 控件有足够的空间在其编辑区包含滚动条。

    • WordWrap 属性设置为 False。


ScrollHeight，ScrollWidth 属性

指定通过移动控件、窗体或页面中的滚动条，可以查看的全部区域的高度，以磅为单位。

语法

object.ScrollHeight [= Single]

object.ScrollWidth [= Single]

ScrollHeight 和 ScrollWidth 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。可滚动区域的高度或宽度。


ScrollLeft，ScrollTop 属性

指定从逻辑窗体、页面或控件的左边或顶边到可视窗体的左边或顶边的距离，以磅为单位。

语法

object.ScrollLeft [= Single]

object.ScrollTop [= Single]

ScrollLeft 和 ScrollTop 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。到窗体边缘的距离。

说明

最小值是 0，最大值是窗体或页面的 ScrollWidth 和 Width 属性值之差。


Selected 属性

返回或设置列表框中条目的选定状态。

语法

object.Selected( index ) [= Boolean]

Selected 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
index | 必需。整数，取值范围是 0 到列表中的条目数减 1 之间的数值。
Boolean | 可选。判断一个条目是否被选中。

设置

Boolean 的设置值为：

值 | 描述
True | 条目被选中。
False | 条目未被选中。

说明

当用户可以构造多项选择时，Selected 属性是很有用的。可以用该属性确定在多项选择列表框中选中的行；还可以用该属性在代码列表中选中行或撤消选定。

该属性的默认值基于当前列表框的选择状态。

对于单选列表框，建议用 Value 或 ListIndex 属性获取和设置选项。在这种情况下，ListIndex 返回被选定条目的索引。然而，在多项选择中，ListIndex 将返回包含在矩形焦点中的行的索引，而不论实际上该行是否被选中。

当一个列表框控件的 MultiSelect 属性设置为 None 时，只可将一行的 Selected 属性设置为 True。

如果输入值超出索引范围，并不会产生错误消息，但也不会给列表中任何条目设置属性。


SelectedItem 属性

返回当前选中的 Tab 或 Page 对象。

语法

object.SelectedItem

SelectedItem 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效的 TabStrip 或多页控件。

说明

SelectedItem 属性是只读的。用 SelectedItem 属性可对当前选中的 Tab 或 Page 对象进行可编程控制。例如，可用 SelectedItem 属性给 Tab 或 Page 对象的属性赋值。


SelectionMargin 属性

规定用户能否通过单击文本左边区域来选中一行。

语法

object.SelectionMargin [= Boolean]

SelectionMargin 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断是否可以通过单击页边距选中一行文本。

设置

Boolean 的设置值为：

值 | 描述
True | 单击页边距可选中文本（默认）。
False | 单击页边距不能选中文本。

说明

SelectionMargin 属性为 True 时，选定的边距占据控件编辑区左边一窄条区域。如果 SelectionMargin 属性设置为 False，整个编辑区都可以保存文本。

打印一个控件时，如果 SelectionMargin 属性设置为 True，则选定的边距也可打印出来。


SelLength 属性

在文本框或组合框的文本部分中选中的字符数。

语法

object.SelLength [= Long]

SelLength 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。数字表达式，指定选中的字符数。对于 SelLength 和 SelStart，设置值的有效范围是从 0 到组合框或文本框编辑区中的全部字符数。

说明

即使控件没有焦点，SelLength 属性也总是有效。将 SelLength 的值设置为小于 0 将产生一个错误。若试图将 SelLength 的值设置为大于控件中的有效字符数，其结果是该值等于控件中字符数的值。

注意 改变 SelStart 属性的值将取消控件中已有的所有选择，并在文本中设置插入点，设置 SelLength 为 0。

默认值 0 表示当前没有文本被选中。


SelStart 属性

指定选中文本的起点。如果没有选中的文本，则指定插入点。

语法

object.SelStart [= Long]

SelStart 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。数字表达式，指定选中文本的起点。对于 SelLength 和 SelStart，设置值的有效范围是从 0 到组合框或文本框编辑区中的全部字符数。默认值是 0。

说明

即使控件没有焦点，SelStart 属性也总是有效。将 SelStart 的值设置为小于 0 将产生错误。如果试图将 SelStart 的值设置为大于控件中的有效字符数，结果是其值等于控件中的字符数。

改变 SelStart 属性的值将取消控件中已有的所有选择，并将在文本中设置插入点，设置 SelLength 为 0。


SelText 属性

返回或设置控件中选中的文本。

语法

object.SelText [= String]

SelText 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。包含选中文本的字符串表达式。

说明

如果选中控件编辑区中的文本，SelText 属性返回 0 长度的字符串。无论控件是否有焦点，该属性总是有效。


ShowDropButtonWhen 属性

规定何时显示组合框或文本框的下拉按钮。

语法

object.ShowDropButtonWhen [= fmShowDropButtonWhen]

ShowDropButtonWhen 属性的语法包括下列成分：

成分 | 描述
object | 必需。有效对象。
fmShowDropButtonWhen | 可选。显示下拉按钮的情况。

设置

fmShowDropButtonWhen 的设置值为：

常数 | 值 | 描述
fmShowDropButtonWhenNever | 0 | 在任何情况下都不显示下拉按钮。
fmShowDropButtonWhenFocus | 1 | 当控件有焦点时显示下拉按钮。
fmShowDropButtonWhenAlways | 2 | 总显示下拉按钮。

对于组合框，默认值是 fmShowDropButtonWhenAlways；对于文本框，默认值是 fmShowDropButtonWhenNever。


SmallChange 属性

规定当用户单击滚动条或数值调节钮中的滚动箭头时发生的位移量。

语法

object.SmallChange [= Long]

SmallChange 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。整数，规定 Value 属性的变化量。

说明

SmallChange 属性没有单位。

该属性可以设置为任意整数。建议取值范围：-32,767 到 +32,767。默认值为 1。


SpecialEffect 属性

指定对象的外观。

语法

对于复选框、选项按钮、切换按钮
object.SpecialEffect [= fmButtonEffect]

对于其他控件
object.SpecialEffect [= fmSpecialEffect]

SpecialEffect 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmButtonEffect | 可选。期望复选框、数值调节钮或切换按钮显示的外观。
fmSpecialEffect | 可选。期望复选框、数值调节钮和切换按钮之外的控件显示的外观。

设置

fmSpecialEffect 的设置值如下：

常数 | 值 | 描述
fmSpecialEffectFlat | 0 | 对象显示为平面的，借助于边框、颜色的变化或二者的共同变化，与周围的窗体相区别。该值为图像和标签的默认值；对所有控件均有效。
fmSpecialEffectRaised | 1 | 对象的上边和左边高亮，下边和右边具有阴影。对复选框和选项按钮无效。
fmSpecialEffectSunken | 2 | 对象的上边和左边具有阴影，下边和右边高亮。控件及其边框显示为刻入所在的窗体。复选框和选项按钮的默认值；对所有控件有效（默认）。
fmSpecialEffectEtched | 3 | 边框显示为沿着控件边缘被雕刻。对复选框和选项按钮无效。
fmSpecialEffectBump | 6 | 对象下边和右边隆起，而上边和左边显示为平面的。对复选框或选项按钮无效。

对于框架，默认值是 Sunken。

请注意：复选框、数值调节钮和切换按钮只接受 Flat 和 Sunken （0 和 2）。而其他控件可接受所列的全部值。

说明

用 SpecialEffect 或 BorderStyle 属性可指定控件的边界形式，但两者不能同时使用。如果把其中一个属性值指定为非零值，系统就把另一个属性值设置为 0。例如，如果把 SpecialEffect 设置为 fmSpecialEffectRaised，系统就把 BorderStyle 设置为 0 (fmBorderStyleNone)。

对于框架，如果 SpecialEffect 等于 fmSpecialEffectFlat，则忽略 BorderStyle。

SpecialEffect 用系统颜色定义它的边界。

注意 虽然切换按钮存在 SpecialEffect 属性，但该属性无效。不能为切换按钮设置或返回该属性的值。


Style 属性

对于组合框，规定用户选择或设置控件的值的方法。对于多页控件和 TabStrip，规定控件中标签的显示风格。

语法

对于组合框
object.Style [= fmStyle]

对于多页控件和 TabStrip
object.Style [= fmTabStyle]

Style 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmStyle | 可选。指定如何设置组合框的值。
fmTabStyle | 可选。指定多页控件或 TabStrip 中标签的显示风格。

设置

fmStyle 设置值如下：

常数 | 值 | 描述
fmStyleDropDownCombo | 0 | 组合框相当于一个下拉式组合框。用户可以在编辑区输入一个值或者从下拉式列表中选择一个值（默认值）。
fmStyleDropDownList | 2 | 组合框相当于一个列表框。用户必须从列表中选择值。

fmTabStyle 设置值如下：

常数 | 值 | 描述
fmTabStyleTabs | 0 | 在标签条中显示标签（默认）。
fmTabStyleButtons | 1 | 在标签条中显示按钮。
fmTabStyleNone | 2 | 不显示标签条。


TabFixedHeight 和 TabFixedWidth 属性

设置或返回标签的固定的高度和宽度，以磅为单位。

语法

object.TabFixedHeight [= Single]

object.TabFixedWidth [= Single]

TabFixedHeight 和 TabFixedWidth 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Single | 可选。TabStrip 或多页控件中标签的高度或宽度的磅数。

设置

如果属性值为 0，则自动调整标签宽度，使每个标签宽度足够容纳其内容，且使每行标签的跨度为控件的宽度。

若属性值大于 0，则所有标签都具有该属性指定的统一宽度。

说明

最小尺寸为 4 磅。


TabIndex 属性

指定单个对象在窗体 Tab 键顺序中的位置。

语法

object.TabIndex [= Integer]

TabIndex 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Integer | 可选。整数，取值范围从 0 到具有 TabIndex 属性的窗体中的控件数减 1 之间的数值。如果 TabIndex 的赋值小于 0，则出错。如果 TabIndex 的赋值大于最大的索引值，则系统将该值重新设置为最大值允许值。

说明

在 Tab 键顺序中的第一个对象的索引值是 0。


TabKeyBehavior 属性

决定是否允许制表符出现在编辑区。

语法

object.TabKeyBehavior [= Boolean]

TabKeyBehavior 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。按 Tab 键的效果。

设置

Boolean 设置值如下：

值 | 描述
True | 按 Tab 键将在编辑区插入一个制表符。
False | 按 Tab 键，将焦点移到 Tab 键顺序中的下一个对象。

说明

TabKeyBehavior 和 MultiLine 属性密切相关。只有 MultiLine 值为 True 时，上述值才起作用。如果 MultiLine 为 False，无论 TabKeyBehavior 为何值，按 Tab 键总是把焦点移到 Tab 键顺序中的下一个控件。

按 Ctrl+Tab 组合键的执行效果也取决于 MultiLine 的值。当 MultiLine 值为 True 时，无论 TabKeyBehavior 为何值，按 Ctrl+Tab 组合键都将产生一个新行。当 MultiLine 值为 False 时，按 Ctrl+Tab 组合键不起作用。


TabOrientation 属性

指定多页控件或 TabStrip 上标签的位置。

语法

object.TabOrientation [= fmTabOrientation]

TabOrientation 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmTabOrientation | 可选。标签显示的位置。

设置

fmTabOrientation 的设置值如下：

常数 | 值 | 描述
fmTabOrientationTop | 0 | 标签显示于控件顶部（默认值）。
fmTabOrientationBottom | 1 | 标签显示于控件底部。
fmTabOrientationLeft | 2 | 标签显示于控件左边。
fmTabOrientationRight | 3 | 标签显示于控件右边。

说明

若选用 TrueType 字体，当 TabOrientation 属性设置为 fmTabOrientationLeft 或 fmTabOrientationRight 时，文字将旋转。若用位图 (bitmapped) 字体，文字不旋转。


TabStop 属性

指定当用户跳格到一个对象时，该对象能否获得焦点 。

语法

object.TabStop [= Boolean]

TabStop 属性的语法包含以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断对象是否接受 Tab 键。

设置

Boolean 的设置值如下：

值 | 描述
True | 指定对象接受 Tab 键（默认值）。
False | 即使对象仍处在实际的 Tab 键顺序中（由 TabIndex 属性决定），当用户用跳格选择对象时仍然跳过它。


Tag 属性

存储对象的附加信息。

语法

object.Tag [= String]

Tag 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。用于标识对象的字符串表达式。默认值为一个空串 ("")。

说明

若要给一个对象的标识字符串赋值而又不影响其他的属性设置或属性，可用 Tag 属性。

例如，可用 Tag 来检验作为变量传给过程的窗体标识或控件标识。


TakeFocusOnClick 属性

指定控件被单击时是否获得焦点。

语法

object.TakeFocusOnClick [= Boolean]

TakeFocusOnClick 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。指定控件被单击时是否获得焦点。

设置

Boolean 的设置值有：

值 | 描述
True | 按钮被单击时获得焦点（默认值）。
False | 按钮被单击时不获得焦点。

说明

TakeFocusOnClick 属性仅定义单击一个控件时发生的事情。如果用 Tab 键选择这个控件，无论 TakeFocusOnClick 为何值，该控件都将获得焦点。

可使用该属性来实现一项影响控件的操作，而又不必使控件放弃焦点。例如，假定一个窗体包含文本框和用于拼写检查的命令按钮。您可能希望选定文本框中的文本后，单击命令按钮运行拼写检查而又使焦点保留在文本框中。这时，可将命令按钮的 TakeFocusOnClick 属性设置为 False，即可实现此功能。。


Text 属性

返回或设置文本框的文本。改变组合框或列表框中选定的行。

语法

object.Text [= String]

Text 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
String | 可选。指定文本的字符串表达式。默认值是空串 ("")。

说明

对于文本框，Text 属性的赋值被同时赋予 Value 属性。

对于组合框，可用 Text 来更新该控件的值。如果 Text 的值与一个现有条目匹配，则 ListIndex 属性的值（当前行的索引）被设置成与 Text 匹配的行；如果 Text 的值不与任何一行匹配，ListIndex 设置为 -1。

对于列表框，Text 的值必须与一个现存列表条目相匹配。如果指定值与任何现存列表项目都不匹配，将产生一个错误。

不能用 Text 属性改变组合框或列表框中条目的值。若需改变，请用 Column 或 List 属性。

ForeColor 属性决定文本的颜色。


TextAlign 属性

定义控件中文本的对齐方式。

语法

object.TextAlign [= fmTextAlign]

TextAlign 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmTextAlign | 可选。控件中文本的对齐方式。

设置

fmTextAlign 的设置值如下：

常数 | 值 | 描述
fmTextAlignLeft | 1 | 将所显示文本的第一个字符与控件显示或编辑区的左边界对齐（默认值）。
fmTextAlignCenter | 2 | 在控件的显示或编辑区中，使文本中央对齐。
fmTextAlignRight | 3 | 将所显示文本的最后一个字符与控件显示或编辑区的右边界对齐。

说明

对于组合框，TextAlign 属性只影响编辑区。该属性不影响列表中文本的对齐方式。对于独立标签，TextAlign 决定了标签题注的对齐方式。


TextColumn 属性

当用户在组合框或列表框中选定一行时，标识相应的列，将其保存在 Text 属性中。

语法

object.TextColumn [= Variant]

TextColumn 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。待显示的列。

设置

TextColumn 属性取值范围是从 -1 到列表的列数之间的数值。第一列的 TextColumn 值是 1，第二列的 TextColumn 值是 2，依此类推。将 TextColumn 的值设置为 0 则显示 ListIndex 的值；将 TextColumn 的值设置为 -1 则显示 ColumnWidths 值大于 0 的第一列。

说明

在组合框中，系统将显示由该控件文本框部分的 TextColumn 属性所指定的列。

当用户在组合框或列表框中选定一行后，由 TextColumn 所引用的那一列就被保存到 Text 属性中。例如，可以建立一个多列列表框，其中第一列包含假期的名称，第二列包含假期的日期。要向用户显示假期的名称，可将第一列指定为 TextColumn；要保存假期的日期，可将第二列指定为 BoundColumn；要隐藏假期的日期，可将第二列的 ColumnWidths 属性设为 0。

当组合框的 Text 属性发生变化时（例如当用户向控件中键入了一个条目时），新文本将与 TextColumn 指定的数据列进行比较。


TextLength 属性

返回文本框或组合框编辑区中的文本的长度，以字符数表示。

语法

object.TextLength

TextLength 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。

说明

TextLength 属性是只读的。对于多行的文本框，TextLength 属性包括 LF（换行）和 CR（回车）字符。


TopIndex 属性

设置和返回出现在表格最顶端位置的项目。

语法

object.TopIndex [= Variant]

TopIndex 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。出现在顶端位置的表项的编号，默认值是 0 或表中第一个项目。

设置

如果表是空的或未被显示，返回值为 -1。


TransitionEffect 属性

定义从一页转换成另一页时，所用的可视效果。

语法

object.TransitionEffect [= fmTransitionEffect]

TransitionEffect 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmTransitionEffect | 可选。在页间转换时所需的效果。

设置

fmTransitionEffect 的设置值如下：

常数 | 值 | 描述
fmTransitionEffectNone | 0 | 无特殊效果（默认值）。
fmTransitionEffectCoverUp | 1 | 新页自底向顶移动，覆盖旧页。
fmTransitionEffectCoverRightUp | 2 | 新页自左下角向右上角移动，覆盖旧页。
fmTransitionEffectCoverRight | 3 | 新页自左向右移动，覆盖旧页。
fmTransitionEffectCoverRightDown | 4 | 新页自左上角向右下角移动，覆盖旧页。
fmTransitionEffectCoverDown | 5 | 新页自顶部向底部移动，覆盖旧页。
fmTransitionEffectCoverLeftDown | 6 | 新页自右上角向左下角移动，覆盖旧页。
fmTransitionEffectCoverLeft | 7 | 新页自右向左移动覆盖旧页。
fmTransitionEffectCoverLeftUp | 8 | 新页自右下角向左上角移动覆盖旧页。
fmTransitionEffectPushUp | 9 | 新页从底部向顶部推动旧页，使其移出视线。
fmTransitionEffectPushRight | 10 | 新页从左向右推动旧页，使其移出视线。
fmTransitionEffectPushDown | 11 | 新页从顶向底推动旧页，使其移出视线。
fmTransitionEffectPushLeft | 12 | 新页从右向左推动旧页，使其移出视线。

说明

用 TransitionPeriod 属性来指定转换效果的历时长度。


TransitionPeriod 属性

以毫秒为单位定义一个转换效果的历时长度。

语法

object.TransitionPeriod [= Long]

TransitionPeriod 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Long | 可选。完成从一页到另一页的转换所需时间。

说明

0 到 10000 之间的任意整数都是该属性的有效设置值。TransitionPeriod 属性设置为 0，则不产生转换效果；TransitionPeriod 属性设置为 10000，产生一个 10 秒的转换。


TripleState 属性

决定用户能否在用户界面，为复选框或切换按钮指定 Null 状态。

语法

object.TripleState [= Boolean]

TripleState 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断控件是否支持 Null 状态。

设置

Boolean 的设置值如下：

值 | 描述
True | 按钮可在三个状态中选择。
False | 按钮只支持 True 和 False状态（默认值）。

说明

虽然数值调节钮具有 TripleState 属性，但是该属性是无效的。无论 TripleState 为何值，都不能通过用户界面把该控件设置为 Null。

当 TripleState 属性为 True 时，用户可从 Null，True 和 False 三个值中选择。Null 值以一个阴影按钮的形式显示。

当 TripleState 为 False 时，用户只能在 True 或 False 二者中选一。

设置为 Null 的控件不能初始化 Click 事件。

无论属性如何设置，都可以通过编程把 Null 的值指定给复选框或切换按钮，使控件显示为阴影。


Value 属性

定义某给定的控件的状态或内容。

语法

object. Value [= Variant]

Value 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
Variant | 可选。控件的状态或内容。

设置

控件 | 描述
复选框 | 整数，表明此条目是否被选中。
 | Null 表明该条目处于空的状态，既未被选中，也未被清除。
 | -1 True。表明此条目被选中。
 | 0 False。表明此条目被清除。
选项按钮 | 同复选框。
切换按钮 | 同复选框。
滚动条 | Max 和 Min 属性所规定的数值之间的整数。
数值调节钮 | 同滚动条。
复选框，列表框 | 当前选中行的 BoundColumn 中的值。
命令按钮 | 总为 False。
多页控件 | 整数，标识当前激活页。
 | 零 ( 0 ) 表示是第一页。最大值比总页数少一。
文本框 | 编辑区中的文本。

说明

对于命令按钮，若在宏或过程中把它的 Value 属性设置为 True，将初始化按钮的 Click 事件。

对于组合框，改变 Value 的内容，BoundColumn 的值不会随之改变。要在组合框中增加或删除条目，可以用 AddItem 或 RemoveItem 方法。

Value 不能用于多选列表框。


VerticalScrollbarSide 属性

规定垂直滚动条出现在窗体或页面的右边还是左边。

语法

object.VerticalScrollbarSide [= fmVerticalScrollbarSide]

VerticalScrollbarSide 属性的语法包括以下成分：

成分 | 描述
object | 必需。有效对象。
fmVerticalScrollbarSide | 可选。滚动条出现的位置。

设置

fmVerticalScrollbarSide 的设置值如下：

常数 | 值 | 描述
fmVerticalScrollbarSideRight | 0 | 将滚动条放在右边（默认值）。
fmVerticalScrollBarSideLeft | 1 | 将滚动条放在左边。

说明

如果在从右向左读的环境下使用窗体，VerticalScrollBarSide 属性将非常有用。


Visible 属性

定义一个对象是可视的还是被隐藏的。

语法

object.Visible [= Boolean]

Visible 属性的语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。判断对象是可视的还是隐藏的。

设置

Boolean 的设置值如下：

值 | 描述
True | 对象是可视的（默认值）。
False | 对象是隐藏的。

说明

用 Visible 属性，无需显示信息即可控制对信息的访问。例如，可把隐藏窗体上的控件的值作为查询的条件。

在设计时间，所有控件都是可以看到的。


WordWrap 属性

指出一个控件的内容在行末是否自动换行。

语法

object.WordWrap [= Boolean]

WordWrap 属性语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Boolean | 可选。控件是否扩展以适应文本的大小。

设置

Boolean 的设置值如下：

值 | 描述
True | 文本换行（默认）。
False | 文本不换行。

说明

对于既支持 WordWrap 属性又支持 MultiLine 属性的控件，当 MultiLine 为 False 时，WordWrap 被忽略。


Zoom 属性

规定显示对象大小的变化范围。

语法

object.Zoom [= Integer]

Zoom 属性语法有以下几个成分：

成分 | 描述
object | 必需。有效对象。
Integer | 可选。所显示图像扩大或缩小的百分比。

说明

Zoom 属性的值规定了图像放大或缩小的百分比，图像大小按照这个百分比变化。10 到 400 之间的数值均为有效值。指定的值是相对于对象原来大小的百分比。因此，设置值为 400 意味着希望将图像放大为原图像的 4 倍（或 400 ％）；设置值为 10 意味着希望将图像缩小为原图像的十分之一（或 10 ％）。


“附加控件”对话框

  1. 从“可以使用的控件”列表中选择要添加到“工具箱”中的控件。

  2. 然后单击“确定”按钮。

提示 通过选择“显示”组中的选项，可以对“可以使用的控件”列表中的控件进行筛选。


“自定义控件”对话框

此对话框中包含了控件的 ControlTipText 属性和在“工具箱”中代表该控件的图标。可以通过此对话框定义或改变与这个控件有关的 ControlTipText 属性，还可以改变在“工具箱”中显示的图标。

若要定义或编辑 ControlTipText 属性：

  • 请为 ControlTipText 属性输入一个新值。

若要编辑图标：

  1. 请选择 Edit Picture CommandButton。

  2. 使用“图像编辑器”对图标进行所需的修改。

若要加载其他图标：

  1. 请单击“加载图片”按钮。

  2. 从对话框中选择一个图片文件。

  3. 单击“确定”按钮，以使新的取值生效。


“页面顺序”对话框

若要改变页面或标签的位置：

  1. 请选择您要移动的页面或标签的名称。

  2. 单击“上移”或“下移”按钮，直至所选项目移至所需位置。

  3. 当全部项目的顺序都符合您的要求之后，单击“确定”按钮。


“重命名”对话框

当焦点位于单独的页面或标签上时，可在此对话框中对其 Accelerator、Caption 和 ControlTipText 属性进行设置，这些属性分别对应于页面或标签的加速键、题注和控件提示文字。而对于当前的“工具箱”页面，您可以在此对话框中设置 Caption 和 ToolTipText 属性。您可以通过这个对话框来更新这些属性的值。

加速键是用户在按下 Alt 键的同时按下的某个键盘按键，用于将焦点移动到某个页面或标签上。题注是页面、标签或当前“工具箱”页面的标签区文本。“控件提示文字”是当用户将鼠标指针置于当前“工具箱”页面未单击它时，所出现的控件的简要描述。

如果要为页面或标签设置加速键：

  • 请在“加速键”框中输入一个字符。

如果要重新命名页面或标签：

  • 请在“题注”框中输入新值。

如果要定义页面或标签的控件提示文字：

  • 请在“控件提示文字”框中输入新值。

如果要为当前的“工具箱”页面定义工具提示文字：

  • 请在“控件提示文字”框中输入新值。

注意 单击“确定”可将新值应用于页面、标签或“工具箱”页面。


Click 事件、命令按钮控件、Accelerator 和 Caption 属性示例

每当用户用鼠标或加速键来单击按钮时，该示例都将改变一次命令按钮的 Accelerator 和 Caption 属性。Click 事件包含改变 Accelerator 和 Caption 属性的代码。

若要使用该示例，请将代码粘贴到包含名为 CommandButton1 的命令按钮的窗体的声明变量部分。

Private Sub UserForm_Initialize()
    CommandButton1.Accelerator  = "C"
    '将加速键设置为 COMMAND + C
End Sub

Private Sub CommandButton1_Click ()
    If CommandButton1.Caption = "OK" Then
        '检查题注，然后更改它。
        CommandButton1.Caption = "Clicked"
        CommandButton1.Accelerator  = "C"
        '将加速键设置为 COMMAND + C
    Else
        CommandButton1.Caption = "OK"
        CommandButton1.Accelerator  = "O"
        '将加速键设置为 COMMAND + O
    End If
End Sub


Page 对象、Pages 集合、多页控件、SelectedItem 属性示例

下例以几种方法访问多页控件的单个页：

  • 使用具有数值索引的 Pages 集合。

  • 使用具有字符串索引的 Pages 集合。

  • 使用具有 Item 方法的 Pages 集合。

  • 使用在多页控件中的单个页的名称。

  • 使用 SelectedItem 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含名为 MultiPage1 的多页控件。

Private Sub UserForm_Initialize()
    Dim PageName As String

    For i = 0 To MultiPage1.Count - 1
        '使用索引（数值的或字符串的）
        MsgBox "MultiPage1.Pages(i).Caption = " _
            & MultiPage1.Pages(i).Caption
        MsgBox "MultiPage1.Pages.Item(i).Caption = " _
            & MultiPage1.Pages.Item(i).Caption

        PageName = MultiPage1.Pages(i).Name
        MsgBox "PageName = " & PageName

        MsgBox "MultiPage1.Pages(PageName)" _
            & ".Caption = "_
            & MultiPage1.Pages(PageName).Caption
        MsgBox "MultiPage1.Pages.Item(PageName)" _
            & ".Caption = " & MultiPage1.Pages  _
            .Item(PageName).Caption

        '使用 Page 对象，而不引用
          'Pages 集合
        If i = 0 Then
            MsgBox "MultiPage1.Page1.Caption= "_
                     & MultiPage1.Page1.Caption
        ElseIf i = 1 Then
            MsgBox "MultiPage1.Page2.Caption = "_
                     & MultiPage1.Page2.Caption
        End If

        '使用 SelectedItem 属性
        MultiPage1.Value = i
        MsgBox "MultiPage1.SelectedItem.Caption = " _
            & MultiPage1.SelectedItem.Caption
    Next i
End Sub


SelectedItem 属性、TabStrip 控件、Tab 对象、Tabs 集合示例

下例用以下几种方法访问单个的 TabStrip 标签：

  • 使用具有数字索引的 Tabs 集合。

  • 使用具有字符串索引的 Tabs 集合。

  • 使用具有 Item 方法的 Tabs 集合。

  • 使用该单独的标签名称。

  • 使用 SelectedItem 属性。

若要使用该示例，请将该示例的代码复制到某窗体的声明变量部分。确保该窗体包含名为 TabStrip1 的 TabStrip。

Private Sub UserForm_Initialize()
    Dim TabName As String

    For i = 0 To TabStrip1.Count - 1
        '使用索引（数值或字符串）
        MsgBox "TabStrip1.Tabs(i).Caption = " _
            & TabStrip1.Tabs(i).Caption
        MsgBox "TabStrip1.Tabs.Item(i).Caption = " _
            & TabStrip1.Tabs.Item(i).Caption

        TabName = TabStrip1.Tabs(i).Name
        MsgBox "TabName = " & TabName

        MsgBox "TabStrip1.Tabs(TabName).Caption = " _
            & TabStrip1.Tabs(TabName).Caption
        MsgBox "TabStrip1.Tabs.Item(TabName)_
            .Caption = " _
            & TabStrip1.Tabs.Item(TabName).Caption

        '使用 Tab 对象而不引用 Tabs
          'collection
        If i = 0 Then
            MsgBox "TabStrip1.Tab1.Caption = " _
                    & TabStrip1.Tab1.Caption
        ElseIf i = 1 Then
            MsgBox "TabStrip1.Tab2.Caption = " _
                    & TabStrip1.Tab2.Caption
        EndIf

        '使用 SelectedItem 属性
        TabStrip1.Value = i
        MsgBox "TabStrip1.SelectedItem.Caption = " _
            & TabStrip1.SelectedItem.Caption
    Next i
End Sub


Enter、Exit 事件、ActiveControl 属性示例

下面示例在一个子程序中使用 ActiveControl 属性，该子程序跟踪用户访问的控件。每一控件的 Enter 事件，通过调用 TraceFocus 子程序来标识有焦点的控件。

若要使用该示例，请将此示例代码复制到某窗体的声明变量部分。该窗体要包含以下控件：

  • 名为 ScrollBar1 的滚动条。

  • 名为 ListBox1 的列表框。

  • 名为 OptionButton1 和 Optionbutton2 的两个选项按钮控件。

  • 名为 Frame1 的框架。
Dim MyControl As Control

Private Sub TraceFocus()
    ListBox1.AddItem ActiveControl.Name
    ListBox1.List(ListBox1.ListCount - 1, 1) = _
        ActiveControl.TabIndex
End Sub

Private Sub UserForm_Initialize()
    ListBox1.ColumnCount = 2
    ListBox1.AddItem "Controls Visited"
    ListBox1.List(0, 1) = "Control Index"
End Sub

Private Sub Frame1_Enter()
    TraceFocus
End Sub

Private Sub ListBox1_Enter()
    TraceFocus
End Sub

Private Sub OptionButton1_Enter()
    TraceFocus
End Sub

Private Sub OptionButton2_Enter()
    TraceFocus
End Sub

Private Sub ScrollBar1_Enter()
    TraceFocus
End Sub


AddControl 事件、Add 方法示例

下例在运行时间使用 Add 方法将控件添至窗体，并且用 AddControl 事件来确认控件已被添加。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 Label1 的标签。
Dim Mycmd as Control
Private Sub CommandButton1_Click()

    Set Mycmd = Controls.Add("MsForms.CommandButton.1") ', CommandButton2，Visible)
    Mycmd.Left = 18
    Mycmd.Top = 150
    Mycmd.Width = 175
    Mycmd.Height = 20
    Mycmd.Caption = "非常有趣。" & Mycmd.Name

End Sub

Private Sub UserForm_AddControl(ByVal Control As _
    MSForms.Control)
    Label1.Caption = "控件已被添加。"
End Sub


Page 对象、多页控件、Add、Clear、Remove 方法示例

下例在运行时间使用 Add、Clear 和 Remove 方法，在多页控件的页中添加和删除控件。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 MultiPage1 的多页控件。

  • 名为 CommandButton1 到 CommandButton3 的三个命令按钮控件。
Dim MyTextBox As Control

Private Sub CommandButton1_Click()
Set MyTextBox = MultiPage1.Pages(0).Controls.Add("MSForms" _
    & ".TextBox.1", "MyTextBox", Visible)
End Sub

Private Sub CommandButton2_Click()
    MultiPage1.Pages(0).Controls.Clear
End Sub

Private Sub CommandButton3_Click()
    If MultiPage1.Pages(0).Controls.Count > 0  Then
        MultiPage1.Pages(0).Controls.Remove "MyTextBox"
    End If
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Add control"
    CommandButton2.Caption = "Clear controls"
    CommandButton3.Caption = "Remove control"
End Sub


Alignment 属性示例

下例演示几个选项按钮控件一起使用时的 Alignment 属性。本示例中，用户可以通过单击切换按钮来更改对齐格式。

若要使用该示例，请将该示例代码复制到某窗体的声明变量部分。确保该窗体包括下列控件：

  • 名为 OptionButton1 和 OptionButton2 的两个选项按钮控件。

  • 名为 ToggleButton1 的切换按钮。
Private Sub UserForm_Initialize()
    OptionButton1.Alignment = fmAlignmentLeft
    OptionButton2.Alignment = fmAlignmentLeft

    OptionButton1.Caption = "Alignment with AutoSize"
    OptionButton2.Caption = "Choice 2"
    OptionButton1.AutoSize = True
    OptionButton2.AutoSize = True

    ToggleButton1.Caption = "Left Align"
    ToggleButton1.WordWrap = True
    ToggleButton1.Value = True
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        ToggleButton1.Caption = "Left Align"
        OptionButton1.Alignment = fmAlignmentLeft
        OptionButton2.Alignment = fmAlignmentLeft
    Else
        ToggleButton1.Caption = "Right Align"
        OptionButton1.Alignment = fmAlignmentRight
        OptionButton2.Alignment = fmAlignmentRight
    End If
End Sub


文本框控件、AutoSize、Text 属性示例

下例中，用一个单行文本框和一个多行文本框演示 AutoSize 属性的效果。用户可以将文本输入任意文本框，并将 AutoSize 打开或关闭而不考虑文本框的内容。这个代码示例还使用了 Text 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 TextBox1 和 TextBox2 的两个文本框控件。

  • 名为 ToggleButton1 的切换按钮。
Private Sub UserForm_Initialize()
    TextBox1.Text = "Single-line TextBox. " _
        & "在此输入文本。"

    TextBox2.MultiLine = True
    TextBox2.Text = "Multi-line TextBox. Type " _
        & "在此输入文本。用 Ctrl+Enter 组合键开始。 " _
        & "新行。"

    ToggleButton1.Value = True
    ToggleButton1.Caption = "AutoSize On"
    TextBox1.AutoSize = True
    TextBox2.AutoSize = True
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        ToggleButton1.Caption = "AutoSize On"
        TextBox1.AutoSize = True
        TextBox2.AutoSize = True
    Else
        ToggleButton1.Caption = "AutoSize Off"
        TextBox1.AutoSize = False
        TextBox2.AutoSize = False
    End If
End Sub


Font 对象、Bold、Italic、Size、StrikeThrough、Underline 和 Weight 属性示例

下例中，演示 Font 对象及与字体相关的 Bold、Italic、Size、StrikeThrough、Underline 和 Weight 属性。该示例还演示，如何直接或者用一个别名来操作对象的字体属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 ToggleButton1 到 ToggleButton4 的四个切换按钮控件。

  • 名为 Label2 的第二个标签和名为 TextBox1 的文本框。
Dim MyFont As StdFont

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        MyFont.Bold = True
          '使用 MyFont 别名来控制字体
        ToggleButton1.Caption = "Bold On"
        MyFont.Size = 22
           '增大字体的尺寸
    Else
        MyFont.Bold = False
        ToggleButton1.Caption = "Bold Off"
        MyFont.Size = 8
          '将字体尺寸恢复到初始尺寸
    End If

    TextBox1.Text = Str(MyFont.Weight)
     'Bold 和 Weight 是相关的。
End Sub

Private Sub ToggleButton2_Click()
    If ToggleButton2.Value = True Then
        Label1.Font.Italic = True
          '直接使用 Label1.Font
        ToggleButton2.Caption = "Italic On"
    Else
        Label1.Font.Italic = False
        ToggleButton2.Caption = "Italic Off"
    End If
End Sub

Private Sub ToggleButton3_Click()
    If ToggleButton3.Value = True Then
   Label1.Font.Strikethrough = True
   '直接使用 Label1.Font
        ToggleButton3.Caption = "StrikeThrough On"
    Else
        Label1.Font.Strikethrough = False
        ToggleButton3.Caption = "StrikeThrough Off"
    End If
End Sub

Private Sub ToggleButton4_Click()
    If ToggleButton4.Value = True Then
        MyFont.Underline = True
          '使用 Label1.Font 的别名 MyFont
        ToggleButton4.Caption = "Underline On"
    Else
        Label1.Font.Underline = False
        ToggleButton4.Caption = "Underline Off"
    End If
End Sub

Private Sub UserForm_Initialize()
    Set MyFont = Label1.Font

    ToggleButton1.Value = True
    ToggleButton1.Caption = "Bold On"

    Label1.AutoSize = True        '设置 Label1 的尺寸
    Label1.AutoSize = False

    ToggleButton2.Value = False
    ToggleButton2.Caption = "Italic Off"

    ToggleButton3.Value = False
    ToggleButton3.Caption = "StrikeThrough Off"

    ToggleButton4.Value = False
    ToggleButton4.Caption = "Underline Off"

    Label2.Caption = "Font Weight"
    TextBox1.Text = Str(Label1.Font.Weight)
    TextBox1.Enabled = False

End Sub


BackColor、BackStyle、BorderColor、BorderStyle、ForeColor、SpecialEffect 属性示例

下例演示 BorderStyle 和 SpecialEffect 属性，通过这些属性显示每一个可用边框。该例还演示如何用 BackColor、Backstyle、BorderColor 和 ForeColor 属性来控制颜色的设置。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 TextBox1 到 TextBox6 的六个文本框控件。

  • 名为 ToggleButton1 和 ToggleButton2 的两个切换按钮控件。
Private Sub UserForm_Initialize()
'用边框类型或特殊效果以及前景和
'背景色初始化每个文本框，

'使用边框类型初始化 TextBox1
TextBox1.Text = "BorderStyle-Single"
TextBox1.BorderStyle = fmBorderStyleSingle
TextBox1.BorderColor = RGB(255, 128, 128)
'赭色
TextBox1.ForeColor = RGB(255, 255, 0)
'黄色
TextBox1.BackColor = RGB(0, 128, 64)
'绿色

'使用特殊效果初始化 TextBoxes 2 到 6
TextBox2.Text = "Flat"
TextBox2.SpecialEffect = fmSpecialEffectFlat
TextBox2.ForeColor = RGB(64, 0, 0)
'棕色
TextBox2.BackColor = RGB(0, 0, 255)
'蓝色

'初始化 TextBox2 的背景类型为不透明的。
TextBox2.BackStyle = fmBackStyleOpaque

TextBox3.Text = "Etched"
TextBox3.SpecialEffect = fmSpecialEffectEtched
TextBox3.ForeColor = RGB(128, 0, 255)
'紫色
TextBox3.BackColor = RGB(0, 255, 255)
'青色

'为以后使用，定义 BorderColor (当 borderstyle=fmBorderStyleSingle)
TextBox3.BorderColor = RGB(0, 0, 0)
'黑色

TextBox4.Text = "Bump"
TextBox4.SpecialEffect = fmSpecialEffectBump
TextBox4.ForeColor = RGB(255, 0, 255)
'深红色
TextBox4.BackColor = RGB(0, 0, 100)
'海蓝色

TextBox5.Text = "Raised"
TextBox5.SpecialEffect = fmSpecialEffectRaised
TextBox5.ForeColor = RGB(255, 0, 0)         _'红色
TextBox5.BackColor = RGB(128, 128, 128)     _'灰色

TextBox6.Text = "Sunken"
TextBox6.SpecialEffect = fmSpecialEffectSunken
TextBox6.ForeColor = RGB(0, 64, 0)
'黄褐色
TextBox6.BackColor = RGB(0, 255, 0)
'绿色

ToggleButton1.Caption = "Swap styles"
ToggleButton2.Caption = "Transparent/Opaque"_
    & "background"
End Sub

Private Sub ToggleButton1_Click()

'在 TextBox1 和 TextBox3 间转换边框
If ToggleButton1.Value = True Then
    '把 TextBox1 从 BorderStyle 改变到 Etched
    TextBox1.Text = "Etched"
    TextBox1.SpecialEffect = fmSpecialEffectEtched

    '把 TextBox3 从 Etched 改变到 BorderStyle
    TextBox3.Text = "BorderStyle-Single"
    TextBox3.BorderStyle = fmBorderStyleSingle
Else
    '把 TextBox1 变回 BorderStyle
    TextBox1.Text = "BorderStyle-Single"
    TextBox1.BorderStyle = fmBorderStyleSingle

    '把 TextBox3 变回 Etched
    TextBox3.Text = "Etched"
    TextBox3.SpecialEffect = fmSpecialEffectEtched
End If
End Sub
Private Sub ToggleButton2_Click()
'将背景设置为不透明或透明
If ToggleButton2.Value = True Then
    '将 TextBox2 变为透明背景
    TextBox2.BackStyle = fmBackStyleTransparent
Else
    '将 TextBox2 变为不透明背景
    TextBox2.BackStyle = fmBackStyleOpaque
End If
End Sub


列表框控件、BoundColumn 属性示例

下例演示 BoundColumn 属性如何影响列表框的值。用户可选择是将列表框的值设置为指定行的索引值，还是设置为列表框中数据的指定列。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 ListBox1 的列表框。

  • 名为 Label1 的标签。

  • 名为 OptionButton1、OptionButton2 和 OptionButton3 的三个选项按钮控件。
Private Sub UserForm_Initialize()
    ListBox1.ColumnCount = 2

    ListBox1.AddItem "Item 1, Column 1"
    ListBox1.List(0, 1) = "Item 1, Column 2"
    ListBox1.AddItem "Item 2, Column 1"
    ListBox1.List(1, 1) = "Item 2, Column 2"

    ListBox1.Value = "Item 1, Column 1"

    OptionButton1.Caption = "List Index"
    OptionButton2.Caption = "Column 1"
    OptionButton3.Caption = "Column 2"
    OptionButton2.Value = True
End Sub

Private Sub OptionButton1_Click()
    ListBox1.BoundColumn = 0
    Label1.Caption = ListBox1.Value
End Sub

Private Sub OptionButton2_Click()
    ListBox1.BoundColumn = 1
    Label1.Caption = ListBox1.Value
End Sub

Private Sub OptionButton3_Click()
    ListBox1.BoundColumn = 2
    Label1.Caption = ListBox1.Value
End Sub

Private Sub ListBox1_Click()
    Label1.Caption = ListBox1.Value
End Sub


DblClick 事件、CanPaste 属性、Paste 和 Copy 方法示例

DblClick 事件、CanPaste 属性、Paset 和 Copy 方法示例

下例使用 CanPaste 属性和 Past 方法，将组合框从剪贴板粘贴到多页控件的一页中。该示例还使用 SetFocus 和 Copy 方法把控件从窗体复制到剪贴板。

用户单击 CommandButton1 可把组合框复制到剪贴板。用户双击（使用 DblClick 事件）CommandButton1 可把组合框粘贴到多页控件上。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ComboBox1 的组合框。

  • 名为 MultiPage1 的多页控件。

  • 名为 CommandButton1 的命令按钮。

注意 该示例还包括一个子程序，用以说明把文本粘贴到控件。

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "It's a beautiful day!"

    CommandButton1.Caption = "Copy ComboBox to " _
        & "Clipboard"
    CommandButton1.AutoSize = True
End Sub

Private Sub MultiPage1_DblClick(ByVal Index As Long, _
    ByVal Cancel As MSForms.ReturnBoolean)
    If MultiPage1.Pages(MultiPage1.Value).CanPaste = _
        True
     Then
        MultiPage1.Pages(MultiPage1.Value).Paste
    Else
        TextBox1.Text = "Can't Paste"
    End If
End Sub

Private Sub CommandButton1_Click()
        UserForm1.ComboBox1.SetFocus
        UserForm1.Copy
End Sub

'将文本粘贴到控件的代码
'Private Sub ComboBox1_DblClick(ByVal Cancel As _
    MSForms.ReturnBoolean)
'   If ComboBox1.CanPaste = True Then
'        ComboBox1.Paste
'    Else
'        TextBox1.Text = "Can't Paste"
'    End If

'End Sub


CanUndo 和 CanRedo 属性、UndoAction 和 RedoAction 方法示例

下例演示在文本框或组合框的文本区内撤消或重复文本编辑的方法。该示例检查撤消或重复操作能否发生，然后执行适当的操作。示例使用了 CanUndo 和 CanRedo 属性及 UndoAction 和 RedoAction 方法。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ComboBox1 的组合框。

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮 控件。
Private Sub CommandButton1_Click()
    If UserForm1.CanUndo = True Then
        UserForm1.UndoAction
        MsgBox "Undid IT"
    Else
        MsgBox "No undo performed."
    End If
End Sub

Private Sub CommandButton2_Click()
    If UserForm1.CanRedo = True Then
        UserForm1.RedoAction
        MsgBox "Redid IT"
    Else
        MsgBox "No redo performed."
    End If
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Text = "Type your text here."

    ComboBox1.ColumnCount = 3
    ComboBox1.AddItem "Choice 1, column 1"
    ComboBox1.List(0, 1) = "Choice 1, column 2"
    ComboBox1.List(0, 2) = "Choice 1, column 3"

    CommandButton1.Caption = "Undo"
    CommandButton2.Caption = "Redo"
End Sub


列表框控件、Column、ColumnCount 和 List 属性示例

'

下例加载带数据的二维数组，随后用 Column 和 List 属性加载两个列表框控件。请注意在加载期间 Column 属性将转置数组元素。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。该窗体要包含名为 ListBox1 和 ListBox2 的两个列表框控件。

Dim MyArray(6,3)

Private Sub UserForm_Initialize()
    Dim i As Single
     '第一个列表框包含三个数据列
    ListBox1.ColumnCount =3
     '第二个框包含六个数据列
     ListBox2.ColumnCount = 6

    '把整数值加载到 MyArray 的第一列
    For i = 0 To 5
        MyArray(i, 0) = i
    Next i

    '加载 MyArray 的列 2 和列 3
    MyArray(0, 1) = "Zero"
    MyArray(1, 1) = "One"
    MyArray(2, 1) = "Two"
    MyArray(3, 1) = "Three"
    MyArray(4, 1) = "Four"
    MyArray(5, 1) = "Five"

    MyArray(0, 2) = "Zero"
    MyArray(1, 2) = "Un ou Une"
    MyArray(2, 2) = "Deux"
    MyArray(3, 2) = "Trois"
    MyArray(4, 2) = "Quatre"
    MyArray(5, 2) = "Cinq"

    '把数据加载到 ListBox1 和 ListBox2
    ListBox1.List() = MyArray
    ListBox2.Column() = MyArray

End Sub


列表框控件、ColumnCount 和 ColumnWidths 属性示例

下例用 ColumnWidths 属性来改变多列列表框的列宽；用三个文本框控件来指定单个列的宽度，并用 Exit 事件来指定每一个文本框的度量单位。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ListBox1 的列表框。

  • 名为 TextBox1 到 TextBox3 的三个文本框控件。

  • 名为 CommandButton1 的命令按钮。

试着输入 0 值来隐藏列。

Dim MyArray(2, 3) As String

Private Sub CommandButton1_Click()
    '被分号分开的每一列
    '都需要 ColumnWidths 值
    ListBox1.ColumnWidths = TextBox1.Text & ";" _
        & TextBox2.Text & ";" & TextBox3.Text
End Sub
Private Sub TextBox3_Exit(ByVal Cancel as MSForms.ReturnBoolean)
    'ColumnWidths 接受磅（不是单位），英寸或厘米；将英寸设为默认
    If Not (InStr(TextBox3.Text, "in") > 0 Or InStr(TextBox3.Text, "cm") > 0) Then
        TextBox3.Text = TextBox3.Text & " in"
    End If
End Sub
Private Sub TextBox2_Exit(ByVal Cancel as MSForms.ReturnBoolean)
    'ColumnWidths 接受点（没有单位），英寸或厘米；将英寸设为缺省
    If Not (InStr(TextBox2.Text, "in") > 0 Or InStr(TextBox2.Text, "cm") > 0) Then
        TextBox2.Text = TextBox2.Text & " in"
    End If
End Sub
Private Sub TextBox1_Exit(ByVal Cancel as MSForms.ReturnBoolean)
    'ColumnWidths 接受点（没有单位），英寸或厘米；将英寸设为缺省
    If Not (InStr(TextBox1.Text, "in") > 0 Or InStr(TextBox1.Text, "cm") > 0) Then
        TextBox1.Text = TextBox1.Text & " in"
    End If
End Sub
Private Sub UserForm_Initialize()
Dim i, j, Rows As Single

ListBox1.ColumnCount = 3
Rows = 2

For j = 0 To ListBox1.ColumnCount - 1
    For i = 0 To Rows - 1
        MyArray(i, j) = "Row " & i & ", Column " & j
    Next i
Next j

ListBox1.List() = MyArray           '把 MyArray 加载到 ListBox1

TextBox1.Text = "1 in"              '初始为 1 英寸列
TextBox2.Text = "1 in"
TextBox3.Text = "1 in"

End Sub


控件集合、Move 方法示例

下例用 For Each...Next 循环在 Controls 集合中访问单个控件。当用户按 CommandButton1 按钮时，使用 Move 方法将其他控件放置在沿着窗体的左边缘那一列。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 CommandButton1 的命令按钮和几个其他控件。

Dim CtrlHeight As Single
Dim CtrlTop As Single
Dim CtrlGap As Single

Private Sub CommandButton1_Click()
    Dim MyControl As Control
    CtrlTop = 5

    For Each MyControl In Controls
        If MyControl.Name = "CommandButton1" Then
            '不要移动该控件或调整该控件的大小。
        Else
            'Move 方法，使用命名参数
        MyControl.Move Top:=CtrlTop,_
            Height:=CtrlHeight, Left:=5

        'Move 方法，使用未命名的参数（左，
        '顶，宽，高）
        'MyControl.Move 5, CtrlTop, ,CtrlHeight

            '计算下一控件的顶坐标
            CtrlTop = CtrlTop + CtrlHeight + CtrlGap
        End If
    Next

End Sub
Private Sub UserForm_Initialize()
    CtrlHeight = 20
    CtrlGap = 5

    CommandButton1.Caption = "Click to move controls"
    CommandButton1.AutoSize = True
    CommandButton1.Left = 120
    CommandButton1.Top = CtrlTop
End Sub


Move 方法示例

下例中，演示对 Controls 集合使用 Move 方法，来移动窗体上的全部控件。用户可单击命令按钮来移动控件。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 CommandButton1 的命令按钮和几个其他控件。

Private Sub CommandButton1_Click()
    '将窗体上的每一控件向右移动 25 磅
     '向上移动 25 磅。
Controls.Move 25, -25
End Sub


Page 对象、命令按钮、多页控件和 ControlTipText 属性示例

下例中，为多页控件中的三个命令按钮控件和两个 Page 对象定义 ControlTipText 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 MultiPage1 的多页控件。

  • 名为 CommandButton1 到 CommandButton3 的三个命令按钮控件。

注意 对于多页控件的单个页，当多页控件或者多页控件的当前页上的控件有焦点时，ControlTipText 变为有效。

Private Sub UserForm_Initialize()
    MultiPage1.Page1.ControlTipText = "Here in page 1"
    MultiPage1.Page2.ControlTipText = "Now in page 2"

    CommandButton1.ControlTipText = "And now here's"
    CommandButton2.ControlTipText = "a tip from"
    CommandButton3.ControlTipText = "your controls!"
End Sub


列表框控件、BoundColumn、ControlSource 和 RowSource 属性示例

下例在列表框中使用工作表单元格的区域，并且，当用户从列表中选中一行时，在另一工作表单元格中将显示该行索引。这个代码示例使用了 RowSource 、BoundColumn 和 ControlSource 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 LIstBox1 的列表框。在工作表单元格的 A1:E4 中输入数据。还需确认单元格 A6 中没有数据。

Private Sub UserForm_Initialize()

ListBox1.ColumnCount = 5
ListBox1.RowSource = "a1:e4"

ListBox1.ControlSource = "a6"
'把 ListIndex 置于单元 a6
ListBox1.BoundColumn = 0
End Sub


Count 属性示例

下例显示窗体的 Controls 集合的 Count 属性，而且 Count 属性标识每一个多页控件和 TabStrip 的页和标签的数目。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。只要遵循下列限定条件，该窗体可以包含任何数目的控件：

  • 多页控件的名称必须以“MultiPage”开头。

  • TabStrip 控件的名称必须以“TabStrip”开头。

注意 可以在多页控件中添加页或在 TabStrip 中添加标签。在窗口中双击控件，然后在控件的标签区内单击右键，并从快捷菜单里选择“新建页”命令。

Private Sub UserForm_Initialize()
    Dim MyControl As Control

    MsgBox "UserForm1.Controls.Count = " _
        & Controls.Count

    For Each MyControl In Controls
        If (MyControl.Name Like "MultiPage*") Then
            MsgBox MyControl.Name _
                    & ".Pages.Count = " _
                    & MyControl.Pages.Count
        ElseIf (MyControl.Name Like "TabStrip*") Then
            MsgBox MyControl.Name & ".Tabs.Count = " _
                    & MyControl.Tabs.Count
        End If
    Next

End Sub


KeyDown 事件、文本框控件、CurLine、CurTargetX、CurX 和 Text 属性示例

下例跟踪多行文本框中的 CurLine、CurTarget 和 CurX 属性设置。当用户使用键盘键入 Text 属性、移动插入点和扩展选择时，这些设置在 KeyUp 事件中改变。

若要使用该示例，请执行如下操作步骤：

  1. 将该示例代码复制到某窗体的声明变量部分。

  2. 在窗体中添加名为 TextBox1 的大文本框。

  3. 把名为 TextBox2、TextBox3 和 TextBox4 的三个文本框控件添加到一个列中。
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    TextBox2.Text = TextBox1.CurLine
    TextBox3.Text = TextBox1.CurX
    TextBox4.Text = TextBox1.CurTargetX
End Sub
Private Sub UserForm_Initialize()
    TextBox1.MultiLine = True

    TextBox1.Text = "此处键入文本。按 Ctrl + Enter 组合键开始新行。"
End Sub


Add、Cut、Paste 方法，Page 对象和多页控件示例

下例用 Add、Cut 和 Paste 方法从多页控件的页中剪切和粘贴控件。剪切和粘贴操作中涉及的控件，动态地被添加进窗体。

本示例假设用户将添加，然后剪切、粘贴新的控件。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为从 CommandButton1 到 CommandButton3 的三个命令按钮控件。

  • 名为 Multipage1 的多页控件。
Dim MyTextBox As Control

Private Sub CommandButton1_Click()
    Set MyTextBox = MultiPage1.Pages(MultiPage1.Value).Controls_
    .Add("MSForms.TextBox.1", "MyTextBox", Visible)
    CommandButton2.Enabled = True
    CommandButton1.Enabled = False
End Sub

Private Sub CommandButton2_Click()
    MultiPage1.Pages(MultiPage1.Value).Controls.Cut
    CommandButton3.Enabled = True
    CommandButton2.Enabled = False
End Sub

Private Sub CommandButton3_Click()
    Dim MyPage As Object
    Set MyPage = _
        MultiPage1.Pages.Item(MultiPage1.Value)

    MyPage.Paste
    CommandButton3.Enabled = False
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Add"
    CommandButton2.Caption = "Cut"
    CommandButton3.Caption = "Paste"

    CommandButton1.Enabled = True
    CommandButton2.Enabled = False
    CommandButton3.Enabled = False
End Sub


Cut、Paste 方法和文本框控件示例

下例用 Cut 和 Paste 方法从一个文本框中剪切文本，并将其粘贴到另一个文本框中。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 和 TextBox2 的两个文本框控件。

  • 名为 CommandButton1 的命令按钮。
Private Sub UserForm_Initialize()
    TextBox1.Text = "From TextBox1!"
    TextBox2.Text = "Hello "

    CommandButton1.Caption = "Cut and Paste"
    CommandButton1.AutoSize = True
End Sub

Private Sub CommandButton1_Click()
    TextBox2.SelStart = 0
    TextBox2.SelLength = TextBox2.TextLength
    TextBox2.Cut

    TextBox1.SetFocus
    TextBox1.SelStart = 0

    TextBox1.Paste
    TextBox2.SelStart = 0
End Sub


Cycle 属性示例

下例为框架和多页控件中的两个 Page 对象定义 Cycle 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Frame1 的框架。

  • 名为 MultiPage1 的多页控件。其中 MultiPage1 包含名为 Page1 和 Page2 的两个对象。

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。

在该窗体中，框架和多页控件的每个页中都放置了几个控件，因此可看到 Cycle 如何影响框架和多页控件的 Tab 键顺序。

若要观察 Cycle 对 Tab 键顺序的影响，用户应按 Tab 键，在控件上跳格；若要把框架和 Page 对象中的控件纳入 Tab 键顺序，则按 CommandButton1 扩展 Tab 键顺序；按 CommandButton2 可限制 Tab 键顺序。

Private Sub RestrictCycles()
'限制框架和 Page 对象的 Tab 键顺序
    Frame1.Cycle = fmCycleCurrentForm
    MultiPage1.Page1.Cycle = fmCycleCurrentForm
    MultiPage1.Page2.Cycle = fmCycleCurrentForm
End Sub

Private Sub UserForm_Initialize()
    RestrictCycles
End Sub

Private Sub CommandButton1_Click()
'扩展 Tab 键顺序（添加框架和
'page 对象）
    Frame1.Cycle = fmCycleAllForms
    MultiPage1.Page1.Cycle = fmCycleAllForms
    MultiPage1.Page2.Cycle = fmCycleAllForms
End Sub

Private Sub CommandButton2_Click()
    RestrictCycles
End Sub


SpinDown、SpinUp 事件和 Delay 属性示例

下例中，演示当用户按下鼠标按钮来更改数值调节钮或滚动条的值时，连续的 Change、SpinUp 和 SpinDown 事件之间的时间间隔。

该示例中，用户选择延时设置，然后单击并按住数值调节钮的任一边。当 SpinUp 和 SpinDown 事件初始化时，它们被记录在列表框中。

若要使用该示例，请将该示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 SpinButton1 的数值调节钮。

  • 名为 OptionButton1 和 OptionButton2 的两个选项按钮控件。

  • 名为 ListBox1 的列表框。
Dim EventCount As Long

Private Sub ResetControl()
    ListBox1.Clear
    EventCount = 0
    SpinButton1.Value = 5000
End Sub

Private Sub UserForm_Initialize()
    SpinButton1.Min = 0
    SpinButton1.Max = 10000
    ResetControl

    SpinButton1.Delay = 50
    OptionButton1.Caption = "50 millisecond delay"
    OptionButton2.Caption = "250 millisecond delay"

    OptionButton1.Value = True
End Sub

Private Sub OptionButton1_Click()
    SpinButton1.Delay = 50
    ResetControl
End Sub

Private Sub OptionButton2_Click()
    SpinButton1.Delay = 250
    ResetControl
End Sub

Private Sub SpinButton1_SpinDown()
    EventCount = EventCount + 1
    ListBox1.AddItem EventCount
End Sub

Private Sub SpinButton1_SpinUp()
    EventCount = EventCount + 1
    ListBox1.AddItem EventCount
End Sub


列表框控件、DataObject 对象、MouseMove 事件和 StartDrag、SetText 方法示例

下例用 DataObject 来包含拖动文本，演示从一个列表框到另一个的拖放操作。该代码示例在 MouseMove 事件中使用 SetText 和 StartDrag 方法来完成拖放操作。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 ListBox1 和 ListBox2 的两个列表框控件。还需在第二个列表框中添加选择。

Private Sub ListBox2_BeforeDragOver(ByVal Cancel As _
    MSForms.ReturnBoolean, ByVal Data As _
    MSForms.DataObject, ByVal X As Single, _
    ByVal Y As Single, ByVal DragState As Long, _
    ByVal Effect As MSForms.ReturnEffect, _
    ByVal Shift As Integer)
    Cancel = True
    Effect = 1
End Sub

Private Sub ListBox2_BeforeDropOrPaste(ByVal _
    Cancel As MSForms.ReturnBoolean, _
    ByVal Action As Long, ByVal Data As _
    MSForms.DataObject, ByVal X As Single, _
    ByVal Y As Single, ByVal Effect As _
    MSForms.ReturnEffect, ByVal Shift As Integer)
    Cancel = True
    Effect = 1
    ListBox2.AddItem Data.GetText
End Sub

Private Sub ListBox1_MouseMove(ByVal Button As _
     Integer, ByVal Shift As Integer, ByVal X As _
     Single, ByVal Y As Single)
    Dim MyDataObject As DataObject
    If Button = 1 Then
        Set MyDataObject = New DataObject
        Dim Effect As Integer
        MyDataObject.SetText ListBox1.Value
        Effect = MyDataObject.StartDrag
    End If
End Sub

Private Sub UserForm_Initialize()
    For i = 1 To 10
        ListBox1.AddItem "Choice " _
            & (ListBox1.ListCount + 1)
    Next i
End Sub


DragBehavior 和 EnterFieldBehavior 属性示例

下例用 DragBehavior 和 EnterFieldBehavior 属性，演示当进入控件并把信息从一个控件拖入另一控件时可提供的不同效果。

该示例使用两个文本框控件。可以给每个控件设置 DragBehavior 和 EnterFieldBehavior 并查看从一个控件到另一控件的拖动效果。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ToggleButton1 和 ToggleButton2 的两个切换按钮控件。这些控件与 TextBox1 相关联。

  • 名为 TextBox2 的文本框。

  • 名为 ToggleButton3 和 ToggleButton4 的两个切换按钮控件。这些控件与 TextBox2 相关联。
Private Sub UserForm_Initialize()
    TextBox1.Text = "Once upon a time in a land ...,"
    ToggleButton1.Value = True
    ToggleButton1.Caption = "Drag Enabled"
    ToggleButton1.WordWrap = True
    TextBox1.DragBehavior = fmDragBehaviorEnabled

    ToggleButton2.Value = True
    ToggleButton2.Caption = "Recall Selection"
    ToggleButton2.WordWrap = True
    TextBox1.EnterFieldBehavior = _
        fmEnterFieldBehaviorRecallSelection

    TextBox2.Text = "XXX, YYYY"
    ToggleButton3.Value = False
    ToggleButton3.Caption = "Drag Disabled"
    ToggleButton3.WordWrap = True
    TextBox2.DragBehavior = fmDragBehaviorDisabled

    ToggleButton4.Value = False
    ToggleButton4.Caption = "Select All"
    ToggleButton4.WordWrap = True
    TextBox2.EnterFieldBehavior = _
        fmEnterFieldBehaviorSelectAll
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
       ToggleButton1.Caption = "Drag Enabled"
       TextBox1.DragBehavior = fmDragBehaviorEnabled
    Else
       ToggleButton1.Caption = "Drag Disabled"
       TextBox1.DragBehavior = fmDragBehaviorDisabled
    End If
End Sub

Private Sub ToggleButton2_Click()
    If ToggleButton2.Value = True Then
        ToggleButton2.Caption = "Recall Selection"
        TextBox1.EnterFieldBehavior = _
            fmEnterFieldBehaviorRecallSelection
    Else
        ToggleButton2.Caption = "Select All"
        TextBox1.EnterFieldBehavior = _
            fmEnterFieldBehaviorSelectAll
    End If
End Sub

Private Sub ToggleButton3_Click()
    If ToggleButton3.Value = True Then
       ToggleButton3.Caption = "Drag Enabled"
       TextBox2.DragBehavior = fmDragBehaviorEnabled
    Else
       ToggleButton3.Caption = "Drag Disabled"
       TextBox2.DragBehavior = fmDragBehaviorDisabled
    End If
End Sub

Private Sub ToggleButton4_Click()
    If ToggleButton4.Value = True Then
        ToggleButton4.Caption = "Recall Selection"
        TextBox2.EnterFieldBehavior = _
            fmEnterFieldBehaviorRecallSelection
    Else
       ToggleButton4.Caption = "Select All"
       TextBox2.EnterFieldBehavior = _
            fmEnterFieldBehaviorSelectAll
    End If
End Sub


Locked、DropButtonStyle 和 ShowDropButtonWhen 属性示例

下例中，演示在组合框或文本框中，可为下拉箭头指定的不同符号。在本示例中，用户可从组合框中选择一个下拉箭头的类型。该示例还使用了 Locked 属性。若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ComboBox1 的组合框。

  • 名为 Label1 的标签。

  • 置于 Label1 之下的名为 TextBox1 的文本框。
Private Sub ComboBox1_Click()
    ComboBox1.DropButtonStyle = ComboBox1.Value
    TextBox1.DropButtonStyle = ComboBox1.Value
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.ColumnCount = 2
    ComboBox1.BoundColumn = 2
    ComboBox1.TextColumn = 1

    ComboBox1.AddItem "Blank Button"
    ComboBox1.List(0, 1) = 0
    ComboBox1.AddItem "Down Arrow"
    ComboBox1.List(1, 1) = 1
    ComboBox1.AddItem "Ellipsis"
    ComboBox1.List(2, 1) = 2
    ComboBox1.AddItem "Underscore"
    ComboBox1.List(3, 1) = 3

    ComboBox1.Value = 0

    TextBox1.Text = "TextBox1"
    TextBox1.ShowDropButtonWhen = fmShowDropButtonWhenAlways
    TextBox1.Locked = True

    Label1.Caption = "TheDropButton also " _
        & "applies to a TextBox."
    Label1.AutoSize = True
    Label1.WordWrap = False
End Sub


DropDown 方法示例

下例用 DropDown 方法来显示组合框中的列表。用户可以通过单击命令按钮来显示组合框列表。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ComboBox1 的组合框。

  • 名为 CommandButton1 的命令按钮。
Private Sub CommandButton1_Click()
    ComboBox1.DropDown
End Sub

Private Sub UserForm_Initialize()
    ComboBox1.AddItem "Turkey"
    ComboBox1.AddItem "Chicken"
    ComboBox1.AddItem "Duck"
    ComboBox1.AddItem "Goose"
    ComboBox1.AddItem "Grouse"
End Sub


复选框控件、Enabled 和 Locked 属性示例

下例演示了 Enabled 和 Locked 属性，及它们如何互相补充。这个例子展现每一个属性时与复选框无关，所以可以观察单个和组合设置。该示例还包括第二个文本框，所以可以在文本框控件之间复制和粘贴信息，并检验由这些属性设置支持的动作。

注意 可以按 Ctrl + C 组合键把选定内容复制到剪贴板，按 Ctrl + V 组合键进行粘贴。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 CheckBox1 和 CheckBox2 的两个复选框控件。

  • 名为 TextBox2 的第二个文本框。
Private Sub CheckBox1_Change()
    TextBox2.Text = "TextBox2"
    TextBox1.Enabled = CheckBox1.Value
End Sub

Private Sub CheckBox2_Change()
    TextBox2.Text = "TextBox2"
    TextBox1.Locked = CheckBox2.Value
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Text = "TextBox1"
    TextBox1.Enabled = True
    TextBox1.Locked = False

    CheckBox1.Caption = "Enabled"
    CheckBox1.Value = True

    CheckBox2.Caption = "Locked"
    CheckBox2.Value = False

    TextBox2.Text = "TextBox2"
End Sub


EnterKeyBehavior 和 MultiLine 属性示例

下例用 EnterKeyBehavior 属性来控制在文本框中的按 Enter 键的操作效果。在此示例中，用户可以指定单行的或者多行的文本框。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ToggleButton1 和 ToggleButton2 的两个切换按钮控件。
Private Sub UserForm_Initialize()
    TextBox1.EnterKeyBehavior = True
    ToggleButton1.Caption = "EnterKeyBehavior is True"
    ToggleButton1.Width = 70
    ToggleButton1.Value = True

    TextBox1.MultiLine = True
    ToggleButton2.Caption = "MultiLine is True"
    ToggleButton2.Width = 70
    ToggleButton2.Value = True

    TextBox1.Height = 100
    TextBox1.WordWrap = True
    TextBox1.Text = "Type your text here. If " _
        & "EnterKeyBehavior is True, " _
        & "press Enter to start a new line. Otherwise, press SHIFT+ENTER."
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        TextBox1.EnterKeyBehavior = True
        ToggleButton1.Caption = _
            "EnterKeyBehavior is True"
    Else
        TextBox1.EnterKeyBehavior = False
        ToggleButton1.Caption = _
            "EnterKeyBehavior is False"
    End If
End Sub

Private Sub ToggleButton2_Click()
    If ToggleButton2.Value = True Then
        TextBox1.MultiLine = True
        ToggleButton2.Caption = "MultiLine TextBox"
    Else
        TextBox1.MultiLine = False
        ToggleButton2.Caption = "Single-line TextBox"
    End If
End Sub


GetFormat、GetText 和 SetText 方法示例

下例用 GetFormat、GetText 和 SetText 方法在 DataObject 和剪贴板之间传输文本。

用户把文本键入文本框然后单击 CommandButton1，把文本以标准文本格式传输到 DataObject。单击 CommandButton2，在 DataObject 中检索文本。单击 CommandButton3，用自定义格式把文本从 TextBox1 复制到 DataObject。单击 CommandButton4，用自定义格式在 DataObject 中检索文本。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 CommandButton1 到 CommandButton4 的四个命令按钮控件。

  • 名为 Label1 的标签。
Dim MyDataObject As DataObject

Private Sub CommandButton1_Click()
'把标准格式放到剪贴板上
    If TextBox1.TextLength > 0 Then
        Set MyDataObject = New DataObject
        MyDataObject.SetText TextBox1.Text
        Label1.Caption = "Put on D.O."
        CommandButton2.Enabled = True
        CommandButton4.Enabled = False
    End If
End Sub

Private Sub CommandButton2_Click()
'从剪切板得到标准格式
    If MyDataObject.GetFormat(1) = True Then
        Label1.Caption = "Std format - "_
            & MyDataObject.GetText(1)
    End If
End Sub

Private Sub CommandButton3_Click()
'把自定义格式放到剪切板上
    If TextBox1.TextLength > 0 Then
        Set MyDataObject = New DataObject
        MyDataObject.SetText TextBox1.Text, 233
        Label1.Caption = "Custom on D.O."
        CommandButton4.Enabled = True
        CommandButton2.Enabled = False
    End If
End Sub

Private Sub CommandButton4_Click()
'从剪切板得到自定义格式
    If MyDataObject.GetFormat(233) = True Then
        Label1.Caption = "Cust format - "_
            & MyDataObject.GetText(233)
End If
End Sub

Private Sub UserForm_Initialize()
    CommandButton2.Enabled = False
    CommandButton4.Enabled = False
End Sub


Copy、GetFromClipboard、GetText 方法和 DataObject 对象示例

下例演示从文本框到剪贴板，从剪贴板到 DataObject 以及从 DataObject 到另一个文本框的数据移动。GetFromClipboard 方法把数据从剪贴板传输到 DataObject。该例还使用了 Copy 和 GetText 方法。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 和 TextBox2 的两个文本框控件。

  • 名为 CommandButton1 的命令按钮。
Dim MyData as DataObject

Private Sub CommandButton1_Click()
    '在把文本复制到剪切板之前，需要选定一段文本
    TextBox1.SelStart = 0
    TextBox1.SelLength = TextBox1.TextLength
    TextBox1.Copy

    MyData.GetFromClipboard
    TextBox2.Text = MyData.GetText(1)
End Sub

Private Sub UserForm_Initialize()
    Set MyData = New DataObject
    TextBox1.Text = "Move this data to the " _
        & "Clipboard, to a DataObject, then to "
        & "TextBox2!"
End Sub


GroupName 属性示例

下例用 GroupName 属性在同一窗体上生成两组选项按钮控件。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 OptionButton1 到 OptionButton5 的五个选项按钮控件。

Private Sub UserForm_Initialize()
    OptionButton1.GroupName = "Widgets"
    OptionButton2.GroupName = "Widgets"
    OptionButton4.GroupName = "Widgets"

    OptionButton3.GroupName = "Gadgets-Group2"
    OptionButton5.GroupName = "Gadgets-Group2"
End Sub


文本框控件、SetFocus 方法、EnterFieldBehavior、HideSelection、 MultiLine 和 Value 属性示例

'

下例在一个窗体或多个窗体的上下文中演示 HideSelection 属性。用户可以在文本框中选定文本，并按 Tab 键到达窗体上的其他控件，并且把焦点转移到第二个窗体。这个代码示例还使用了 SetFocus 方法及 EnterFieldBehavior、MultiLine 和 Value 属性。

若要使用该示例，请执行如下操作步骤：

  1. 把示例代码（最后事件子程序除外）复制到窗体的声明变量部分。

  2. 添加名为 TextBox1 的大文本框，名为 ToggleButton1 的切换按钮和名为 CommandButton1 的命令按钮。

  3. 将名为 UserForm2 的第二个窗体插入此工程。

  4. 把此列表最后的事件子程序粘贴到 UserForm2 的声明变量部分。

  5. 在此窗体中，加入名为 CommandButton1 的命令按钮。

  6. 运行 UserForm1。

' ***** UserForm1 的代码 *****

Private Sub CommandButton1_Click()
    TextBox1.SetFocus
    UserForm2.Show    '显示第二个窗体
End Sub
Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        TextBox1.HideSelection = False
        ToggleButton1.Caption = "Selection Visible"
    Else
        TextBox1.HideSelection = True
        ToggleButton1.Caption = "Selection Hidden"
    End If
End Sub
Private Sub UserForm_Initialize()
    TextBox1.MultiLine = True
    TextBox1.EnterFieldBehavior = fmEnterFieldBehaviorRecallSelection

'填充文本框
    TextBox1.Text = "SelText indicates the starting " _
        & "point of selected text, or the insertion" _
        & "point if no text is selected." _ & Chr$(10) _
        & Chr$(13) & "The SelStart property is" _
        & "always valid, even when the control does" _
        & "not have focus. Setting SelStart to a" _
        & "value less than zero creates an error. " _
        & Chr$(10) & Chr$(13) & "Changing the value" _
        & "of SelStart cancels any existing" _
        & "selection in the control, places" _
        & "an insertion point in the text, and sets " _
        & "the SelLength property to zero."

    TextBox1.HideSelection = True
    ToggleButton1.Caption = "Selection Hidden"
    ToggleButton1.Value = False

End Sub

'

' ***** UserForm2 的代码 *****

Private Sub CommandButton1_Click()
    UserForm2.Hide
End Sub


Index 属性示例

下例用 Index 属性来改变多页控件和 TabStrip 中页和标签的顺序。用户选择 CommandButton1 可把第三页和标签移到多页控件和 TabStrip 的最前面。用户选择 CommandButton2 可把选中的页和标签移到多页控件和 TabStrip 的最后面。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。

  • 名为 Multipage1 的多页控件。

  • 名为 TabStrip1 的 TabStrip。
Dim MyPageOrTab As Object

Private Sub CommandButton1_Click()
'把第三页和标签移到控件的前面
    MultiPage1.page3.Index = 0
    TabStrip1.Tab3.Index = 0
End Sub

Private Sub CommandButton2_Click()
'把选定的页和标签移到控件的后面
    Set MyPageOrObject = MultiPage1.SelectedItem
    MsgBox "MultiPage1.SelectedItem = " _
        & MultiPage1.SelectedItem.Name
    MyPageOrObject.Index = 4

    Set MyPageOrObject = TabStrip1.SelectedItem
    MsgBox "TabStrip1.SelectedItem = " _
        & TabStrip1.SelectedItem.Caption
    MyPageOrObject.Index = 4
End Sub

Private Sub UserForm_Initialize()
    MultiPage1.Width = 200
    MultiPage1.Pages.Add
    MultiPage1.Pages.Add
    MultiPage1.Pages.Add

    TabStrip1.Width = 200
    TabStrip1.Tabs.Add
    TabStrip1.Tabs.Add
    TabStrip1.Tabs.Add

    CommandButton1.Caption = _
        "Move third page/tab to front"
    CommandButton1.Width = 120

    CommandButton2.Caption = _
        "Move selected item to back"
    CommandButton2.Width = 120
 End Sub


InsideHeight 和 InsideWidth 属性示例

下例用 InsideHeight 和 InsideWidth 属性来调整命令按钮的大小。用户可单击命令按钮来调整其大小。

注意 InsideHeight 和 InsideWidth 为只读属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。
Dim Resize As Single

Private Sub UserForm_Initialize()
    Resize = 0.75
    CommandButton1.Caption = "Resize Button"

End Sub

Private Sub CommandButton1_Click()
    CommandButton1.Move 10, 10, _
        UserForm1.InsideWidth * Resize, _
        UserForm1.InsideHeight * Resize
    CommandButton1.Caption = "Button resized " _
        & "using InsideHeight and InsideWidth!"
End Sub


Item 方法和选项按钮控件示例

下例用 Item 方法访问 Controls 和 Pages 集合中的单个成员。用户选择 Controls 集合的选项按钮，或者选择多页控件的选项按钮，然后单击命令按钮，则在标签中返回相应的控件名称。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 Label1 的标签。

  • 名为 OptionButton1 和 OptionButton2 的选项按钮。

  • 名为 MultiPage1 和多页控件。
Dim MyControl As Object
Dim ControlsIndex As Integer

Private Sub CommandButton1_Click()
    If OptionButton1.Value = True Then
        '处理用户窗体的 Controls 集合
        Set MyControl = Controls.Item(ControlsIndex)
        Label1.Caption = MyControl.Name

        '为用户窗体上的下一个控件准备索引
        ControlsIndex = ControlsIndex + 1
        If ControlsIndex >= Controls.Count Then
            ControlsIndex = 0
        End If

    ElseIf OptionButton2.Value = True Then
        '处理 Pages 集合的当前页
        Set MyControl = MultiPage1.Pages _
            .Item(MultiPage1.Value)
        Label1.Caption = MyControl.Name
    End If
End Sub

Private Sub UserForm_Initialize()
    ControlsIndex = 0

    OptionButton1.Caption = "Controls Collection"
    OptionButton2.Caption = "Pages Collection"
    OptionButton1.Value = True

    CommandButton1.Caption = "Get Member Name"
End Sub


KeyPress 事件示例

下例用 KeyPress 事件，把击键值从一个文本框复制到另一个文本框中。用户在相应标记的文本框中键入内容。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 和 TextBox2 的两个文本框控件。
Private Sub TextBox1_KeyPress(ByVal KeyAscii As _
    MSForms.ReturnInteger)
    TextBox2.Text = TextBox2.Text & Chr(KeyAscii)

    '为处理键组合（用 Shift，
     'Control，Option，Command 以及其他键），
    '或 Tab 键 或 Enter 键，用 KeyDown 或 KeyUp 事件。
End Sub

Private Sub UserForm_Initialize()
    Move 0, 0, 570, 380

    TextBox1.Move 30, 40, 220, 160
    TextBox1.MultiLine = True
    TextBox1.WordWrap = True
    TextBox1.Text = "Type text here."
    TextBox1.EnterKeyBehavior = True

    TextBox2.Move 298, 40, 220, 160
    TextBox2.MultiLine = True
    TextBox2.WordWrap = True
    TextBox2.Text = "Typed text copied here."
    TextBox2.Locked = True
 End Sub


LargeChange 和 SmallChange 属性示例

下例演示当与独立滚动条一起使用时 LargeChange 和 SmallChange 的属性。用户可以把 LargeChange 和 SmallChange 值设置为 0 到 100 范围内的任何整数。该示例还用 MaxLength 属性来限定作为 LargeChange 和 SmallChange 值的输入字符数。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签和名为 TextBox1 的文本框。

  • 名为 Label2 的标签和名为 TextBox2 的文本框。

  • 名为 ScrollBar1 的滚动条。

  • 名为 Label3 的标签。
Dim TempNum As Integer

Private Sub ScrollBar1_Change()
    Label3.Caption = ScrollBar1.Value
End Sub

Private Sub TextBox1_Change()
    If IsNumeric(TextBox1.Text) Then
        TempNum = CInt(TextBox1.Text)
        If TempNum >= 0 And TempNum <= 100 Then
            ScrollBar1.SmallChange = TempNum
        Else
            TextBox1.Text = ScrollBar1.SmallChange
        End If
    Else
        TextBox1.Text = ScrollBar1.SmallChange
    End If
End Sub

Private Sub TextBox2_Change()
    If IsNumeric(TextBox2.Text) Then
        TempNum = CInt(TextBox2.Text)
        If TempNum >= 0 And TempNum <= 100 Then
            ScrollBar1.LargeChange = TempNum
        Else
            TextBox2.Text = ScrollBar1.LargeChange
        End If
    Else
        TextBox2.Text = ScrollBar1.LargeChange
    End If
End Sub

Private Sub UserForm_Initialize()
    ScrollBar1.Min = -1000
    ScrollBar1.Max = 1000

    Label1.Caption = "SmallChange 0 to 100"
    ScrollBar1.SmallChange = 1
    TextBox1.Text = ScrollBar1.SmallChange
    TextBox1.MaxLength = 3

    Label2.Caption = "LargeChange 0 to 100"
    ScrollBar1.LargeChange = 100
    TextBox2.Text = ScrollBar1.LargeChange
    TextBox2.MaxLength = 3

    ScrollBar1.Value = 0
    Label3.Caption = ScrollBar1.Value
End Sub


Layout 事件、LayoutEffect 属性和 Move 方法示例

下例用 Move 方法在窗体上移动选定的控件，并用 Layout 事件和 LayoutEffect 属性来标识被移动的控件（并改变用户窗体的布局）。用户单击控件来移动它，再单击命令按钮。信息框显示正在移动的控件名称。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分，请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ComboBox1 的组合框。

  • 名为 OptionButton1 的选项按钮。

  • 名为 CommandButton1 的命令按钮。

  • 名为 ToggleButton1 的切换按钮。
Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Move current control"
    CommandButton1.AutoSize = True
    CommandButton1.TakeFocusOnClick = False

    ToggleButton1.Caption = "Use Layout Event"
    ToggleButton1.Value = True
End Sub

Private Sub CommandButton1_Click()
    If ActiveControl.Name = "ToggleButton1" Then
        '保持静止
    Else
        '当 ToggleButton1.Value 为 True 时，
          ’用 Layout 事件移动控件。
        ActiveControl.Move 0, 0, , , _
            ToggleButton1.Value
    End If
End Sub

Private Sub UserForm_Layout()
    Dim MyControl As Control

    MsgBox "In the Layout Event"

    '查找正在移动的控件。
    For Each MyControl In Controls
        If MyControl.LayoutEffect = _
            fmLayoutEffectInitiate Then
            MsgBox MyControl.Name & " is moving."
            Exit For
        End If
    Next
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        ToggleButton1.Caption = "Use Layout Event"
    Else
        ToggleButton1.Caption = "No Layout Event"
    End If
End Sub


SetFocus 方法、LineCount 和 TextLength 属性示例

下例用 LineCount 和 TextLength 属性及 SetFocus 方法统计文本框中文本的字符和行数。在该示例中，用户可在文本框中键入字符，并检索 LineCount 和 TextLength 属性的当前值。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含以下控件：

  • 名为 TextBox1 的文本框。

  • 名为 CommandButton1 的命令按钮。

  • 名为 Label1 和 Label2 的两个标签控件。
'按 Shift + Enter 组合键，在文本框中另起一行。

Private Sub CommandButton1_Click()
    '要得到行数，必须先将焦点
     '移到 TextBox1
    TextBox1.SetFocus
    Label1.Caption = "LineCount = "_
        & TextBox1.LineCount
    Label2.Caption = "TextLength = "_
        & TextBox1.TextLength
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.WordWrap = True
    CommandButton1.AutoSize = True
    CommandButton1.Caption = "Get Counts"

    Label1.Caption = "LineCount = "
    Label2.Caption = "TextLength = "

    TextBox1.MultiLine = True
    TextBox1.WordWrap = True
    TextBox1.Text = "Enter your text here."
End Sub


列表框控件和 List 属性示例

下例中，交换多列列表框的列。该示例以两种方法使用 List 属性：

  1. 在列表框中访问和交换单个值。在这种用法中，List 有下标，指明特定值的行和列。

  2. 最初用来自数组的值加载列表框。在这个用法中，List 没有下标。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 ListBox1 的列表框和名为 CommandButton1 的命令按钮。

Dim MyArray(6, 3)
'数组含有列表框的列值。

Private Sub UserForm_Initialize()
    Dim i As Single

    ListBox1.ColumnCount = 3
'这个列表框包含三个数据列

    '加载整数值 MyArray
    For i = 0 To 5
        MyArray(i, 0) = i
        MyArray(i, 1) = Rnd
        MyArray(i, 2) = Rnd
    Next i

    '加载 ListBox1
    ListBox1.List() = MyArray

End Sub
Private Sub CommandButton1_Click()
'交换 1 列和 3 列的内容

    Dim i As Single
    Dim Temp As Single

    For i = 0 To 5
        Temp = ListBox1.List(i, 0)
        ListBox1.List(i, 0) = ListBox1.List(i, 2)
        ListBox1.List(i, 2) = Temp
    Next i
End Sub


ListBox 控件、AddItem 和 RemoveItem 方法以及 ListIndex、ListCount 属性示例

下例用 AddItem、RemoveItem 以及 ListIndex 和 ListCount 属性来添加和删除列表框的内容。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ListBox1 的列表框。

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。
Dim EntryCount As Single

Private Sub CommandButton1_Click()
    EntryCount = EntryCount + 1
    ListBox1.AddItem (EntryCount & " - Selection")
End Sub
Private Sub CommandButton2_Click()
    '确认列表框包含列表项
    If ListBox1.ListCount >= 1 Then
        '如果没有选中的内容，用上一次的列表项。
        If ListBox1.ListIndex = -1 Then
            ListBox1.ListIndex = _
                    ListBox1.ListCount - 1
        End If
        ListBox1.RemoveItem (ListBox1.ListIndex)
    End If
End Sub
Private Sub UserForm_Initialize()
    EntryCount = 0
    CommandButton1.Caption = "Add Item"
    CommandButton2.Caption = "Remove Item"
End Sub


ListRows 属性示例

下例中，用数值调节钮来控制组合框的下拉列表中的行数。用户改变数值调节钮的值，然后单击组合框的下拉箭头来显示列表。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ComboBox1 的组合框。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 Label1 的标签。
Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 1 To 20
        ComboBox1.AddItem "Choice " & (ComboBox1.ListCount + 1)
    Next i

    SpinButton1.Min = 0
    SpinButton1.Max = 12
    SpinButton1.Value = ComboBox1.ListRows
    Label1.Caption = "ListRows = " & SpinButton1.Value
End Sub

Private Sub SpinButton1_Change()
    ComboBox1.ListRows = SpinButton1.Value
    Label1.Caption = "ListRows = " & SpinButton1.Value
End Sub


ListStyle 和 MultiSelect 属性示例

下例用 ListStyle 和 MultiSelect 属性来控制列表框的外观。用户用切换按钮为 ListStyle 选择一个值，并为一个 MultiSelect 值选择数值调节钮。列表框的外观随列表框内的选定行为发生相应的变化。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ListBox1 的列表框。

  • 名为 Label1 的标签。

  • 名为从 OptionButton1 到 OptionButton3 的三个选项按钮控件。

  • 名为 ToggleButton1 的切换按钮。
Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 1 To 8
        ListBox1.AddItem "Choice" & (ListBox1.ListCount + 1)
    Next i

    Label1.Caption = "MultiSelect Choices"
    Label1.AutoSize = True

    ListBox1.MultiSelect = fmMultiSelectSingle
    OptionButton1.Caption = "Single entry"
    OptionButton1.Value = True
    OptionButton2.Caption = "Multiple entries"
    OptionButton3.Caption = "Extended entries"

    ToggleButton1.Caption = "ListStyle - Plain"
    ToggleButton1.Value = True
    ToggleButton1.Width = 90
    ToggleButton1.Height = 30
End Sub

Private Sub OptionButton1_Click()
    ListBox1.MultiSelect = fmMultiSelectSingle
End Sub

Private Sub OptionButton2_Click()
    ListBox1.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub OptionButton3_Click()
    ListBox1.MultiSelect = fmMultiSelectExtended
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1.Value = True Then
        ToggleButton1.Caption = "Plain ListStyle"
        ListBox1.ListStyle = fmListStylePlain
    Else
        ToggleButton1.Caption = "OptionButton " _
            & "or CheckBox"
        ListBox1.ListStyle = fmListStyleOption
    End If
End Sub


ListWidth 属性示例

下例用数值调节钮来控制组合框的下拉列表的宽度。用户改变数值调节钮的值，然后再单击组合框的下拉箭头来显示列表。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ComboBox1 的组合框。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 Label1 的标签。
Private Sub SpinButton1_Change()
    ComboBox1.ListWidth = SpinButton1.Value
    Label1.Caption = "ListWidth = " _
        & SpinButton1.Value
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 1 To 20
        ComboBox1.AddItem "Choice " _
            & (ComboBox1.ListCount + 1)
    Next i

    SpinButton1.Min = 0
    SpinButton1.Max = 130
    SpinButton1.Value = Val(ComboBox1.ListWidth)
    SpinButton1.SmallChange = 5
    Label1.Caption = "ListWidth = " _
        & SpinButton1.Value
End Sub


MatchEntry 属性和选项按钮控件示例

下例用 MatchEntry 属性，演示组合框和列表框可用的字符匹配。该示例中，用户可以设置与选项按钮控件匹配的类型，然后键入到组合框中，以便在列表中指定一项。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 OptionButton1 到 OptionButton3 的三个选项按钮控件。

  • 名为 ComboBox1 的组合框。
Private Sub OptionButton1_Click()
    ComboBox1.MatchEntry = fmMatchEntryNone
End Sub

Private Sub OptionButton2_Click()
    ComboBox1.MatchEntry = fmMatchEntryFirstLetter
End Sub

Private Sub OptionButton3_Click()
    ComboBox1.MatchEntry = fmMatchEntryComplete
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 1 To 9
        ComboBox1.AddItem "Choice " & i
    Next i
    ComboBox1.AddItem "Chocoholic"

    OptionButton1.Caption = "No matching"
    OptionButton1.Value = True

    OptionButton2.Caption = "Basic matching"
    OptionButton3.Caption = "Extended matching"
End Sub


MatchFound 和 MatchRequired 属性以及 Change 事件、复选框控件示例

下例用 MatchFound 和 MatchRequired 属性来演示组合框的附加的字符匹配。匹配校验发生于 Change 事件中。

在这个例子中，用户指定组合框的文本部分是否必须与组合框中的列表项之一匹配。用户可以利用复选框来指定是否要求匹配，然后在组合框中键入条件，指定列表中的一项。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ComboBox1 的组合框。

  • 名为 CheckBox1 的复选框。
Private Sub CheckBox1_Click()
    If CheckBox1.Value = True Then
        ComboBox1.MatchRequired = True
        MsgBox "To move the focus from the " _
            & "ComboBox, you must match an entry in " _
            & "the list or press ESC."
    Else
        ComboBox1.MatchRequired = False
        MsgBox " To move the focus from the " _
            & "ComboBox, just tab to or click " _
            & "another control. Matching is optional."
    End If
End Sub

Private Sub ComboBox1_Change()
    If ComboBox1.MatchRequired = True Then
    'MSForms 自动处理这种情况
    Else
        If ComboBox1.MatchFound = True Then
            MsgBox "Match Found; matching optional."
        Else
            MsgBox "Match not Found; matching " _
                    & "optional."
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer

For i = 1 To 9
    ComboBox1.AddItem "Choice " & i
Next i
ComboBox1.AddItem "Chocoholic"

CheckBox1.Caption = "MatchRequired"
CheckBox1.Value = True
End Sub


Max、Min 和 MaxLength 属性示例

下例演示当与独立滚动条一起使用时的 Max 和 Min 属性。用户可以将 Max 和 Min 的值设置为从 -1000 到 1000 之间的任意整数。该示例还用 MaxLength 属性来限制所输入的 Max 和 Min 值的字符数。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签和名为 TextBox1 的文本框。

  • 名为 Label2 的标签和名为 TextBox2 的文本框。

  • 名为 ScrollBar1 的滚动条。

  • 名为 Label3 的标签。
Dim TempNum As Integer

Private Sub UserForm_Initialize()
    Label1.Caption = "Min -1000 to 1000"
    ScrollBar1.Min = -1000
    TextBox1.Text = ScrollBar1.Min
    TextBox1.MaxLength = 5

    Label2.Caption = "Max -1000 to 1000"
    ScrollBar1.Max = 1000
    TextBox2.Text = ScrollBar1.Max
    TextBox2.MaxLength = 5

    ScrollBar1.SmallChange = 1
    ScrollBar1.LargeChange = 100
    ScrollBar1.Value = 0
    Label3.Caption = ScrollBar1.Value
End Sub

Private Sub TextBox1_Change()
    If IsNumeric(TextBox1.Text) Then
        TempNum = CInt(TextBox1.Text)
        If TempNum >= -1000 And TempNum <= 1000 Then
            ScrollBar1.Min = TempNum
        Else
            TextBox1.Text = ScrollBar1.Min
        End If
    Else
        TextBox1.Text = ScrollBar1.Min
    End If
End Sub

Private Sub TextBox2_Change()
    If IsNumeric(TextBox2.Text) Then
        TempNum = CInt(TextBox2.Text)
        If TempNum >= -1000 And TempNum <= 1000 Then
            ScrollBar1.Max = TempNum
        Else
            TextBox2.Text = ScrollBar1.Max
        End If
    Else
        TextBox2.Text = ScrollBar1.Max
    End If
End Sub

Private Sub ScrollBar1_Change()
Label3.Caption = ScrollBar1.Value
End Sub


MouseIcon 和 MousePointer 属性示例

下例演示了如何指定一个适合特定的控件或场所的鼠标指针。可以用 MousePointer 属性从几个有效的鼠标指针中选择一个；或者用 MousePointer 和 MouseIcon 属性指定一个自定义图标。

按以下方式执行该示例：

  • 从列表框中选择一种鼠标指针，用以改变与第一个命令按钮相关联的鼠标指针。

  • 单击第一个命令按钮，使其鼠标指针与第二个命令按钮相关。

  • 单击第二个命令按钮，为其鼠标指针加载一个自定义图标。

若要使用该示例，请将这个示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。

  • 名为 LIstBox1 的列表框。

注意 该示例使用了两个图标文件（用 LoadPicture 函数加载；在 Windows 中以 .ico 文件扩展名标识）。要指定常驻系统的图标文件，应编辑每个 LoadPicture 函数的调用。

Private Sub ListBox1_Click()
    If IsNull(ListBox1.Value) = False Then
        CommandButton1.MousePointer = ListBox1.Value

        If CommandButton1.MousePointer = _
            fmMousePointerCustom Then
            CommandButton1.MouseIcon = _
                 LoadPicture("c:\msvc20\cdk32\" _
                 & "samples\circ1\bix.ico")
        End If
    End If
End Sub

Private Sub CommandButton1_Click()
    CommandButton2.MousePointer = CommandButton1.MousePointer

    If CommandButton2.MousePointer = fmMousePointerCustom Then
        CommandButton2.MouseIcon = CommandButton1.MouseIcon
    End If
End Sub

Private Sub CommandButton2_Click()
    CommandButton2.MousePointer = fmMousePointerCustom
    CommandButton2.MouseIcon = LoadPicture("c:\msvc20\cdk32\samples\push\push.ico")
End Sub

Private Sub UserForm_Initialize()
    '装入具有 MousePoiter 选择的 ListBox
    ListBox1.ColumnCount = 2

    ListBox1.AddItem "fmMousePointerDefault"
    ListBox1.List(0, 1) = fmMousePointerDefault
    ListBox1.AddItem "fmMousePointerArrow"
    ListBox1.List(1, 1) = fmMousePointerArrow
    ListBox1.AddItem "fmMousePointerCross"
    ListBox1.List(2, 1) = fmMousePointerCross

    ListBox1.AddItem "fmMousePointerIBeam"
    ListBox1.List(3, 1) = fmMousePointerIBeam
    ListBox1.AddItem "fmMousePointerSizeNESW"
    ListBox1.List(4, 1) = fmMousePointerSizeNESW
    ListBox1.AddItem "fmMousePointerSizeNS"
    ListBox1.List(5, 1) = fmMousePointerSizeNS

    ListBox1.AddItem "fmMousePointerSizeNWSE"
    ListBox1.List(6, 1) = fmMousePointerSizeNWSE
    ListBox1.AddItem "fmMousePointerSizeWE"
    ListBox1.List(7, 1) = fmMousePointerSizeWE
    ListBox1.AddItem "fmMousePointerUpArrow"
    ListBox1.List(8, 1) = fmMousePointerUpArrow

    ListBox1.AddItem "fmMousePointerHourglass"
    ListBox1.List(9, 1) = fmMousePointerHourGlass
    ListBox1.AddItem "fmMousePointerNoDrop"
    ListBox1.List(10, 1) = fmMousePointerNoDrop
    ListBox1.AddItem "fmMousePointerAppStarting"
    ListBox1.List(11, 1) = fmMousePointerAppStarting

    ListBox1.AddItem "fmMousePointerHelp"
    ListBox1.List(12, 1) = fmMousePointerHelp
    ListBox1.AddItem "fmMousePointerSizeAll"
    ListBox1.List(13, 1) = fmMousePointerSizeAll
    ListBox1.AddItem "fmMousePointerCustom"
    ListBox1.List(14, 1) = fmMousePointerCustom

    ListBox1.BoundColumn = 2
    ListBox1.Value = fmMousePointerDefault

    MsgBox "ListBox1.Value =" & ListBox1.Value & "."
    CommandButton1.MousePointer = ListBox1.Value
End Sub


AutoSize、MultiLine、WordWrap、ScrollBars 属性和文本框控件示例

下例在文本框上演示 MultiLine、WordWrap 和 ScrollBars 属性。

若要使用该示例，请将该示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 ToggleButton1 到 ToggleButton4 的四个切换按钮控件。

若要浏览文本框中的整个文本，请单击切换按钮控件，将 MultiLine 和 WordWrap 设置为 True。

当 MultiLine 为 True 时，按 Shift+Enter 组合键可以输入新的文本行。

手工改变文本框的内容时，会出现滚动条。

Private Sub UserForm_Initialize()
'Initialize TextBox properties and toggle buttons

    TextBox1.Text = "Type your text here. "
        & "Enter SHIFT+ENTER to move to a new line."

    TextBox1.AutoSize = False
    ToggleButton1.Caption = "AutoSize Off"
    ToggleButton1.Value = False
    ToggleButton1.AutoSize = True

    TextBox1.WordWrap = False
    ToggleButton2.Caption = "WordWrap Off"
    ToggleButton2.Value = False
    ToggleButton2.AutoSize = True

    TextBox1.ScrollBars = 0
    ToggleButton3.Caption = "ScrollBars Off"
    ToggleButton3.Value = False
    ToggleButton3.AutoSize = True

    TextBox1.MultiLine = False
    ToggleButton4.Caption = "Single Line"
    ToggleButton4.Value = False
    ToggleButton4.AutoSize = True
 End Sub

Private Sub ToggleButton1_Click()
'Set AutoSize property and associated ToggleButton

    If ToggleButton1.Value = True Then
        TextBox1.AutoSize = True
        ToggleButton1.Caption = "AutoSize On"
    Else
        TextBox1.AutoSize = False
        ToggleButton1.Caption = "AutoSize Off"
    End If
End Sub
Private Sub ToggleButton2_Click()
'设置 WordWrap 属性和相关的 ToggleButton

    If ToggleButton2.Value = True Then
        TextBox1.WordWrap = True
        ToggleButton2.Caption = "WordWrap On"
    Else
        TextBox1.WordWrap = False
        ToggleButton2.Caption = "WordWrap Off"
    End If
End Sub
Private Sub ToggleButton3_Click()
'设置 ScrollBars 属性和相关的 ToggleButton

    If ToggleButton3.Value = True Then
        TextBox1.ScrollBars = 3
        ToggleButton3.Caption = "ScrollBars On"
    Else
        TextBox1.ScrollBars = 0
        ToggleButton3.Caption = "ScrollBars Off"
    End If
End Sub
Private Sub ToggleButton4_Click()
'设置 MultiLine 属性和相关的 ToggleButton

    If ToggleButton4.Value = True Then
        TextBox1.MultiLine = True
        ToggleButton4.Caption = "Multiple Lines"
    Else
        TextBox1.MultiLine = False
        ToggleButton4.Caption = "Single Line"
    End If
End Sub


MultiSelect 和 Selected 属性示例

下例用 MultiSelect 和 Selected 属性来演示用户如何在列表框中选择一项或多项。用户通过选中选项按钮来指定选择的方法，然后在列表框中选择一项或多项。单击命令按钮可以在第二个列表框中显示所选的项。

若要使用该示例，请将该示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ListBox1 和 ListBox2 的两个列表框控件。

  • 名为 CommandButton1 的命令按钮。

  • 名为 OptionButton1 到 OptionButton3 的三个选项按钮控件。
Dim i As Integer

Private Sub CommandButton1_Click()
    ListBox2.Clear

    For i = 0 To 9
        If ListBox1.Selected(i) = True Then
            ListBox2.AddItem ListBox1.List(i)
        End If
    Next i

End Sub

Private Sub OptionButton1_Click()
    ListBox1.MultiSelect = fmMultiSelectSingle
End Sub

Private Sub OptionButton2_Click()
    ListBox1.MultiSelect = fmMultiSelectMulti
End Sub

Private Sub OptionButton3_Click()
    ListBox1.MultiSelect = fmMultiSelectExtended
End Sub

Private Sub UserForm_Initialize()
    For i = 0 To 9
        ListBox1.AddItem "Choice " & (ListBox1.ListCount + 1)
    Next i

    OptionButton1.Caption = "Single Selection"
    ListBox1.MultiSelect = fmMultiSelectSingle
    OptionButton1.Value = True

    OptionButton2.Caption = "Multiple Selection"
    OptionButton3.Caption = "Extended Selection"

    CommandButton1.Caption = "Show selections"
    CommandButton1.AutoSize = True
End Sub


Name 属性示例

下例显示窗体上每一控件的 Name 属性。该示例用 Controls 集合在直接放置在用户窗体上的所有控件中循环。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。该窗体要包含一个名为 CommandButton1 的命令按钮和几个其他控件。

Private Sub CommandButton1_Click()
    Dim MyControl As Control

    For Each MyControl In Controls
        MsgBox "MyControl.Name = " & MyControl.Name
    Next
End Sub


Object 属性示例

假定一个新的控件，它的 Top 属性与 Microsoft 窗体的标准 Top 属性不同。基于以下语法，在两个属性中可任选其一：

  • control.Top 使用标准的 Top 属性。

  • control.Object.Top 使用来自新增控件的 Top 属性。


Layout 事件、OldLeft、OldTop、OldHeight 和 OldWidth 属性示例

Layout 事件和 OldLeft、OldTop、OldHeight、OldWidth 属性示例

下例在 Layout 事件内部使用 OldLeft、OldTop、OldHeight 和 OldWidth 属性，使控件保持当前的位置和大小。用户单击标签为“Move ComboBox”的命令按钮可移动控件，然后出现一个响应信息框。还可以单击标签为“Reset ComboBox”的命令按钮，为另一个副本将控件复位。

若要使用该示例，请将该示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。

  • 名为 ComboBox1 的组合框。
Dim Initialize As Integer
Dim ComboLeft, ComboTop, ComboWidth, _
    ComboHeight As Integer

Private Sub UserForm_Initialize()
    Initialize = 0
    CommandButton1.Caption = "Move ComboBox"
    CommandButton2.Caption = "Reset ComboBox"

    '复位组合框的信息
    ComboLeft = ComboBox1.Left
    ComboTop = ComboBox1.Top
    ComboWidth = ComboBox1.Width
    ComboHeight = ComboBox1.Height
End Sub

Private Sub CommandButton1_Click()
    ComboBox1.Move 0, 0, , , True
End Sub

Private Sub UserForm_Layout()
    Dim MyControl As Control
    Dim MsgBoxResult As Integer
    '初始 layout 事件时不输出 MsgBox。
    If Initialize = 0 Then
        Initialize = 1
        Exit Sub
    End If

    MsgBoxResult = MsgBox("In Layout event " _
        & "- Continue move?", vbYesNo)
    If MsgBoxResult = vbNo Then
        ComboBox1.Move ComboBox1.OldLeft, _
            ComboBox1.OldTop, ComboBox1.OldWidth, _
            ComboBox1.OldHeight
    End If
End Sub

Private Sub CommandButton2_Click()
    ComboBox1.Move ComboLeft, ComboTop, _
        ComboWidth, ComboHeight
End Sub


Parent 属性示例

下例用 Parent 属性来引用包含特定控件的控件或窗体。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 和 Label2 的两个标签控件。

  • 名为 CommandButton1 的命令按钮。

  • 已选中一个或多个其他控件。
Dim MyControl As Object
Dim MyParent As Object
Dim ControlsIndex As Integer

Private Sub UserForm_Initialize()
    ControlsIndex = 0
    CommandButton1.Caption = "Get Control and Parent"
    CommandButton1.AutoSize = True
    CommandButton1.WordWrap = True
End Sub

Private Sub CommandButton1_Click()
    '处理 UserForm 的控件集合
    Set MyControl = Controls.Item(ControlsIndex)
    Set MyParent = MyControl.Parent
    Label1.Caption = MyControl.Name
    Label2.Caption = MyParent.Name

    '为 Userform 的下一个控件准备索引。
    ControlsIndex = ControlsIndex + 1
    If ControlsIndex >= Controls.Count Then
        ControlsIndex = 0
    End If
End Sub


PictureAlignment 属性示例

下例用 PictureAlignment 属性来设置一幅背景图片。该示例还标识 PictureAlignment 所提供的对齐选项。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Frame1 的框架。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 TextBox1 的文本框。
Dim Alignments(5) As String

Private Sub UserForm_Initialize()
    Alignments(0) = "0 - Top Left"
    Alignments(1) = "1 - Top Right"
    Alignments(2) = "2 - Center"
    Alignments(3) = "3 - Bottom Left"
    Alignments(4) = "4 - Bottom Right"

    '指定存在于系统中的位图
    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0
    SpinButton1.Max = 4
    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)
    Frame1.PictureAlignment = SpinButton1.Value
End Sub

Private Sub SpinButton1_Change()
    TextBox1.Text = Alignments(SpinButton1.Value)
    Frame1.PictureAlignment = SpinButton1.Value
End Sub

Private Sub TextBox1_Change()
    Select Case TextBox1.Text
    Case "0"
        TextBox1.Text = Alignments(0)
        Frame1.PictureAlignment = 0
    Case "1"
        TextBox1.Text = Alignments(1)
        Frame1.PictureAlignment = 1
    Case "2"
        TextBox1.Text = Alignments(2)
        Frame1.PictureAlignment = 2
    Case "3"
        TextBox1.Text = Alignments(3)
        Frame1.PictureAlignment = 3
    Case "4"
        TextBox1.Text = Alignments(4)
        Frame1.PictureAlignment = 4
    Case Else
        TextBox1.Text = Alignments(SpinButton1.Value)
        Frame1.PictureAlignment = SpinButton1.Value
    End Select
End Sub


组合框控件、AddItem 方法、Picture 和 PicturePosition 属性示例

下例用组合框来显示控件的图片位置选项。每次用户单击列表选项，命令按钮上的图片和题注都将被更新。这个代码示例还使用了 AddItem 方法来固定组合框选项。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 CommandButton1 的命令按钮。

  • 名为 ComboBox1 的组合框。
Private Sub UserForm_Initialize()
    Label1.Left = 18
    Label1.Top = 12
    Label1.Height = 12
    Label1.Width = 190
    Label1.Caption = "Select picture placement " _
        & "relative to the caption."

    '把列表条目加入组合框。每一
    '条目的值符合组合框中
    '对应的 ListIndex 的值。
    ComboBox1.AddItem "Left Top"        'ListIndex = 0
    ComboBox1.AddItem "Left Center"     'ListIndex = 1
    ComboBox1.AddItem "Left Bottom"     'ListIndex = 2
    ComboBox1.AddItem "Right Top"       'ListIndex = 3
    ComboBox1.AddItem "Right Center"    'ListIndex = 4
    ComboBox1.AddItem "Right Bottom"    'ListIndex = 5
    ComboBox1.AddItem "Above Left"      'ListIndex = 6
    ComboBox1.AddItem "Above Center"    'ListIndex = 7
    ComboBox1.AddItem "Above Right"    'ListIndex = 8
    ComboBox1.AddItem "Below Left"      'ListIndex = 9
    ComboBox1.AddItem "Below Center"    'ListIndex = 10
    ComboBox1.AddItem "Below Right"    'ListIndex = 11
    ComboBox1.AddItem "Centered"        'ListIndex = 12
    '使用下拉列表
    ComboBox1.Style = fmStyleDropDownList     '组合框值是 ListIndex 值
    ComboBox1.BoundColumn = 0
    '把组合框设置为第一个条目
    ComboBox1.ListIndex = 0

    ComboBox1.Left = 18
    ComboBox1.Top = 36
    ComboBox1.Width = 90
    ComboBox1.ListWidth = 90

    '初始化 CommandButton1
    CommandButton1.Left = 230
    CommandButton1.Top = 36
    CommandButton1.Height = 120
    CommandButton1.Width = 120

    '注意：确认引用的位图文件是
    '存在于系统中的，并在
    '文件名中包括路径
    CommandButton1.Picture = _
         LoadPicture("c:\windows\argyle.bmp")
    CommandButton1.PicturePosition = ComboBox1.Value
End Sub

Private Sub ComboBox1_Click()
    Select Case ComboBox1.Value
    Case 0  '上左
        CommandButton1.Caption = "Left Top"
        CommandButton1.PicturePosition = _
            fmPicturePositionLeftTop

    Case 1  '中左
        CommandButton1.Caption = "Left Center"
        CommandButton1.PicturePosition = _
            fmPicturePositionLeftCenter

    Case 2  '下左
        CommandButton1.Caption = "Left Bottom"
        CommandButton1.PicturePosition = _
            fmPicturePositionLeftBottom

    Case 3  '上右
        CommandButton1.Caption = "Right Top"
        CommandButton1.PicturePosition = _
            fmPicturePositionRightTop

    Case 4  '中右
        CommandButton1.Caption = "Right Center"
        CommandButton1.PicturePosition = _
            fmPicturePositionRightCenter

    Case 5  '下右
        CommandButton1.Caption = "Right Bottom"
        CommandButton1.PicturePosition = _
            fmPicturePositionRightBottom

    Case 6  '左上
        CommandButton1.Caption = "Above Left"
        CommandButton1.PicturePosition = _
            fmPicturePositionAboveLeft

    Case 7  '中上
        CommandButton1.Caption = "Above Center"
        CommandButton1.PicturePosition = _
            fmPicturePositionAboveCenter

    Case 8  '右上
        CommandButton1.Caption = "Above Right"
        CommandButton1.PicturePosition = _
            fmPicturePositionAboveRight

    Case 9  '左下
        CommandButton1.Caption = "Below Left"
        CommandButton1.PicturePosition = _
            fmPicturePositionBelowLeft

    Case 10 '中下
        CommandButton1.Caption = "Below Center"
        CommandButton1.PicturePosition = _
            fmPicturePositionBelowCenter

    Case 11 '右下
        CommandButton1.Caption = "Below Right"
        CommandButton1.PicturePosition = _
            fmPicturePositionBelowRight

    Case 12 '中
        CommandButton1.Caption = "Centered"
        CommandButton1.PicturePosition = _
            fmPicturePositionCenter

    End Select

End Sub


PictureSizeMode 属性示例

下例用 PictureSizeMode 属性来演示图片的三种显示选项：原样显示图片、改变图片尺寸但保持其原有比例、以及让图片填满整个空间。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Frame1 的框架。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 TextBox1 的文本框。

  • 名为 OptionButton1 到 OptionButton3 的三个选项按钮控件。

注意 该示例是 PictureAlignment 属性示例的增强版，两个属性相互补充。所增强的是三个选项按钮事件的子程序，它们控制图像是否被修剪、放大或伸展。

Dim Alignments(5) As String

Private Sub UserForm_Initialize()
    Alignments(0) = "0 - Top Left"
    Alignments(1) = "1 - Top Right"
    Alignments(2) = "2 - Center"
    Alignments(3) = "3 - Bottom Left"
    Alignments(4) = "4 - Bottom Right"

    '指定存在于系统上的位图
    Frame1.Picture = LoadPicture("c:\winnt2\ball.bmp")

    SpinButton1.Min = 0
    SpinButton1.Max = 4
    SpinButton1.Value = 0

    TextBox1.Text = Alignments(0)
    Frame1.PictureAlignment = SpinButton1.Value

    OptionButton1.Caption = "Crop"
    OptionButton1.Value = True
    OptionButton2.Caption = "Stretch"
    OptionButton3.Caption = "Zoom"
End Sub

Private Sub OptionButton1_Click()
    If OptionButton1.Value = True Then
        Frame1.PictureSizeMode = fmPictureSizeModeClip
    End If
End Sub

Private Sub OptionButton2_Click()
    If OptionButton2.Value = True Then
        Frame1.PictureSizeMode = fmPictureSizeModeStretch
    End If
End Sub

Private Sub OptionButton3_Click()
    If OptionButton3.Value = True Then
        Frame1.PictureSizeMode = fmPictureSizeModeZoom
    End If
End Sub

Private Sub SpinButton1_Change()
    TextBox1.Text = Alignments(SpinButton1.Value)
    Frame1.PictureAlignment = SpinButton1.Value
End Sub

Private Sub TextBox1_Change()
    Select Case TextBox1.Text
    Case "0"
        TextBox1.Text = Alignments(0)
        Frame1.PictureAlignment = 0
    Case "1"
        TextBox1.Text = Alignments(1)
        Frame1.PictureAlignment = 1
    Case "2"
        TextBox1.Text = Alignments(2)
        Frame1.PictureAlignment = 2
    Case "3"
        TextBox1.Text = Alignments(3)
        Frame1.PictureAlignment = 3
    Case "4"
        TextBox1.Text = Alignments(4)
        Frame1.PictureAlignment = 4
    Case Else
        TextBox1.Text = Alignments(SpinButton1.Value)
        Frame1.PictureAlignment = SpinButton1.Value
    End Select
End Sub


PutInClipboard 方法示例

Paste、PutInClipboard 和 SetText 方法示例

下例演示从文本框到 DataObject，从 DataObject 到剪贴板以及从剪贴板到另一个文本框的数据移动。PutInClipboard 方法把数据从 DataObject 转移到剪贴板。同时，该示例还使用了 SetText 和 Paste 方法。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 和 TextBox2 的两个文本框控件。

  • 名为 CommandButton1 的命令按钮。
Dim MyData As DataObject

Private Sub CommandButton1_Click()
    Set MyData = New DataObject

    MyData.SetText TextBox1.Text
    MyData.PutInClipboard

    TextBox2.Paste
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Text = "Move this data to a " _
        & "DataObject, to the Clipboard, then to " _
        & "TextBox2!"
End Sub


滚动条控件和 Scroll 事件示例

下例演示独立的滚动条，并在用户移动滚动框时报告其值的变化。用户单击控件两端的箭头、单击滚动框与任意一个箭头之间的区域，或者拖动滚动框，都可以移动滚动框。当用户拖动滚动框时，Scroll 事件显示一条消息，表明用户为获得新值而滚动滚动框。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ScrollBar1 的滚动条。

  • 名为 Label1 和 Label2 的两个标签控件。Label1 包含用户的缩放信息。Label2 报告 delta 值。
Dim ScrollSaved As Integer   '前一个 ScrollBar 设置

Private Sub UserForm_Initialize()
    ScrollBar1.Min = -225
    ScrollBar1.Max = 289
    ScrollBar1.Value = 0

    Label1.Caption = "-225  -----Widgets-----   289"
    Label1.AutoSize = True

    Label2.Caption = ""
End Sub

Private Sub ScrollBar1_Change()
    Label2.Caption = " Widget Changes "_
         & (ScrollSaved - ScrollBar1.Value)
End Sub

Private Sub ScrollBar1_Exit(ByVal Cancel as MSForms.ReturnBoolean)
    Label2.Caption = " Widget Changes "_
         & (ScrollSaved - ScrollBar1.Value)
    ScrollSaved = ScrollBar1.Value
End Sub

Private Sub ScrollBar1_Scroll()
    Label2.Caption = (ScrollSaved–ScrollBar1_
        .Value) & " Widget Changes by Scrolling"
End Sub


ScrollBars 和 KeepScrollBarsVisible 属性示例

下例用 ScrollBars 和 KeepScrollBarsVisible 属性，在框架中和多页控件的页面中添加滚动条。用户选中一个选项按钮，随后为 KeepScrollBarsVisible 指定一个值。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 MultiPage1 的多页控件。

  • 名为 Frame1 的框架。

  • 名为从 OptionButton1 到 OptionButton4 的四个选项按钮控件。
Private Sub UserForm_Initialize()
    MultiPage1.Pages(0).ScrollBars = fmScrollBarsBoth
    MultiPage1.Pages(0).KeepScrollBarsVisible = fmScrollBarsNone

    Frame1.ScrollBars = fmScrollBarsBoth
    Frame1.KeepScrollBarsVisible = _         fmScrollBarsNone

    OptionButton1.Caption = "No scroll bars"
    OptionButton1.Value = True
    OptionButton2.Caption = "Horizontal scroll bars"
    OptionButton3.Caption = "Vertical scroll bars"
    OptionButton4.Caption = "Both scroll bars"
End Sub

Private Sub OptionButton1_Click()
    MultiPage1.Pages(0).KeepScrollBarsVisible = _
        fmScrollBarsNone
    Frame1.KeepScrollBarsVisible = fmScrollBarsNone
End Sub

Private Sub OptionButton2_Click()
    MultiPage1.Pages(0).KeepScrollBarsVisible = _
        fmScrollBarsHorizontal
    Frame1.KeepScrollBarsVisible = _
        fmScrollBarsHorizontal
End Sub

Private Sub OptionButton3_Click()
    MultiPage1.Pages(0).KeepScrollBarsVisible = _
        fmScrollBarsVertical
    Frame1.KeepScrollBarsVisible = _
        fmScrollBarsVertical
End Sub

Private Sub OptionButton4_Click()
    MultiPage1.Pages(0).KeepScrollBarsVisible = _
        fmScrollBarsBoth
    Frame1.KeepScrollBarsVisible = fmScrollBarsBoth
End Sub


ScrollHeight、ScrollLeft、ScrollTop 和 ScrollWidth 属性示例

下例把多页控件的一页用作滚动区。用户可用多页控件的 Page2 上的滚动条来访问该页的最初未显示部分。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 MultiPage1 的多页控件，并且多页控件的每页都包含一个或多个控件。

注意 多页控件的每页都是唯一的。Page1 没有滚动条。Page2 有水平和垂直的滚动条。

Private Sub UserForm_Initialize()
    MultiPage1.Pages(1).ScrollBars = fmScrollBarsBoth
    MultiPage1.Pages(1).KeepScrollBarsVisible = _
        fmScrollBarsNone

    MultiPage1.Pages(1).ScrollHeight = 2 * _
        MultiPage1.Height
    MultiPage1.Pages(1).ScrollWidth = 2 * _
        MultiPage1.Width

    '在设置 ScrollLeft 和 ScrollTop 之前设置
     'ScrollHeight 和 SrollWidth
    MultiPage1.Pages(1).ScrollLeft = _
        MultiPage1.Width / 2
    MultiPage1.Pages(1).ScrollTop = _
        MultiPage1.Height / 2
End Sub


Style 属性示例

下例用 Style 属性，改变在组合框的文本区域内键入字符的结果。用户选中选项按钮控件，选取一种样式，然后在组合框中键入字符来选取条目。当 Style 是 fmStyleDropDownList 时，用户必须从下拉列表中选择一个条目；当 Style 是 fmStyleDropDownCombo 时，用户在文本区域键入字符，指定下拉列表中的一个条目。

若要使用该示例，把示例代码复制到某窗体的声明变量部分，请确保该窗体包含：

  • 名为 OptionButton1 和 OptionButton2 的两个选项按钮控件。

  • 名为 ComboBox1 的组合框。
Private Sub OptionButton1_Click()
    ComboBox1.Style = fmStyleDropDownCombo
End Sub

Private Sub OptionButton2_Click()
    ComboBox1.Style = fmStyleDropDownList
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 1 To 10
        ComboBox1.AddItem "Choice " & i
    Next i

    OptionButton1.Caption = "Select like ComboBox"
    OptionButton1.Value = True
    ComboBox1.Style = fmStyleDropDownCombo

    OptionButton2.Caption = "Select like ListBox"
End Sub


Style 属性和标签控件示例

下例用 Style 属性来指定多页控件和 TabStrip 的标签的外观。这个示例还演示了使用标签的方法。用户通过选择选项按钮来选取样式。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 OptionButton1 到 OptionButton3 的三个选项按钮控件。

  • 名为 MultiPage1 的多页控件。

  • 名为 TabStrip1 的 TabStrip。

  • TabStrip 之中的任意控件。

  • 在多页控件的每一页中的任意控件。
Private Sub OptionButton1_Click()
    MultiPage1.Style = fmTabStyleTabs
    TabStrip1.Style = fmTabStyleTabs
End Sub

Private Sub OptionButton2_Click()
    '注意页面边界是看不见的
    MultiPage1.Style = fmTabStyleButtons
    TabStrip1.Style = fmTabStyleButtons
End Sub

Private Sub OptionButton3_Click()
    '注意页面边界是看不见的
    '并且页正文开始于标签
     '正常出现处
    MultiPage1.Style = fmTabStyleNone
    TabStrip1.Style = fmTabStyleNone
End Sub

Private Sub UserForm_Initialize()
    Label1.Caption = "Page/Tab Style"
    OptionButton1.Caption = "Tabs"
    OptionButton1.Value = True
    MultiPage1.Style = fmTabStyleTabs
    TabStrip1.Style = fmTabStyleTabs

    OptionButton2.Caption = "Buttons"
    OptionButton3.Caption = "No Tabs or Buttons"
End Sub


TabFixedHeight 和 TabFixedWidth 属性示例

下例用 TabFixedHeight 和 TabFixedWidth 属性，设置用于多页控件和 TabStrip 中的标签的尺寸。用户可单击数值调节钮控件来调整多页控件和 TabStrip 中标签的高度和宽度。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 MultiPage1 的多页控件。

  • 名为 TabStrip1 的 TabStrip。

  • 名为 Label1 的标签，用于宽度控制。

  • 名为 SpinButton1 的数值调节钮，用于宽度控制。

  • 名为 TextBox1 的文本框，用于宽度控制。

  • 名为 Label2 的标签，用于高度控制。

  • 名为 SpinButton2 的数值调节钮，用于高度控制。

  • 名为 TextBox2 的文本框，用于高度控制。
Private Sub UpdateTabWidth()
    TextBox1.Text = SpinButton1.Value
    TabStrip1.TabFixedWidth = SpinButton1.Value
    MultiPage1.TabFixedWidth = SpinButton1.Value
End Sub

Private Sub UpdateTabHeight()
    TextBox2.Text = SpinButton2.Value
    TabStrip1.TabFixedHeight = SpinButton2.Value
    MultiPage1.TabFixedHeight = SpinButton2.Value
End Sub

Private Sub UserForm_Initialize()
    MultiPage1.Style = fmTabStyleButtons

    Label1.Caption = "Tab Width"
    SpinButton1.Min = 0
    SpinButton1.Max = _
        TabStrip1.Width / TabStrip1.Tabs.Count
    SpinButton1.Value = 0
    TextBox1.Locked = True

    UpdateTabWidth

    Label2.Caption = "Tab Height"
    SpinButton2.Min = 0
    SpinButton2.Max = TabStrip1.Height
    SpinButton2.Value = 0
    TextBox2.Locked = True

    UpdateTabHeight
End Sub

Private Sub SpinButton1_SpinDown()
    UpdateTabWidth
End Sub

Private Sub SpinButton1_SpinUp()
    UpdateTabWidth
End Sub

Private Sub SpinButton2_SpinDown()
    UpdateTabHeight
End Sub

Private Sub SpinButton2_SpinUp()
    UpdateTabHeight
End Sub


TabIndex Property 属性示例

下例用 TabIndex 属性来显示和设置单个控件的 Tab 键顺序。用户按 Tab 键可以跳到 Tab 键顺序中的下一个控件，并显示此控件的 TabIndex。用户也可以单击控件来显示其 TabIndex。在 TextBox 中指定一个新的索引值然后单击 CommandButton3，可以改变控件的 TabIndex。如果改变了一个控件的 TabIndex，将同时更新这个框架中其他控件的 TabIndex。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 TextBox1 的文本框。

  • 名为 Frame1 的框架。

  • 在框架中的名为 TextBox2 的文本框。

  • 在框架中的名为 CommandButton1 和 CommandButton2 的两个命令按钮控件。

  • 在框架中的名为 ScrollBar1 的滚动条。

  • 名为 CommandButton3 的命令按钮（不在框架中）。
Private Sub MoveToFront()
    Dim i, Temp As Integer

    Temp = Frame1.ActiveControl.TabIndex
    For i = 0 To Temp - 1
        Frame1.Controls.Item(i).TabIndex = i + 1
    Next i

    Frame1.ActiveControl.TabIndex = 0
    TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub

Private Sub CommandButton3_Click()
    Dim i, Temp As Integer

    If IsNumeric(TextBox1.Text) Then
        Temp = Val(TextBox1.Text)

     If Temp >= Frame1.Controls.Count Or Temp < 0
         Then
         'Entry out of range; move control to front
            'of tab order
            MoveToFront
                 ElseIf
                 Temp > Frame1.ActiveControl.TabIndex
            Then
            'Move entry down the list
            For i = Frame1.ActiveControl.TabIndex + _
                    1 To Temp
               Frame1.Controls.Item(i).TabIndex = _
                        i - 1
            Next i
            Frame1.ActiveControl.TabIndex = Temp
            TextBox1.Text = _
                 Frame1.ActiveControl.TabIndex
        Else
            'Move Entry up the list
            For i = Frame1.ActiveControl.TabIndex - _
                    1 To Temp
               Frame1.Controls.Item(i).TabIndex = _
                        i + 1
            Next i
            Frame1.ActiveControl.TabIndex = Temp
            TextBox1.Text = _
                 Frame1.ActiveControl.TabIndex
        End If
    Else
        'Text entry; move control to front of tab
          'order
        MoveToFront
    End If
End Sub

Private Sub UserForm_Initialize()
    Label1.Caption = "TabIndex"

    Frame1.Controls(0).SetFocus
    TextBox1.Text = Frame1.ActiveControl.TabIndex

    Frame1.Cycle = fmCycleCurrentForm

    CommandButton3.Caption = "Set TabIndex"
    CommandButton3.TakeFocusOnClick = False
End Sub

Private Sub TextBox2_Enter()
    TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub

Private Sub CommandButton1_Enter()
    TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub

Private Sub CommandButton2_Enter()
    TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub

Private Sub ScrollBar1_Enter()
    TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub


TabStop 属性示例

下例使用 TabStop 属性来控制是否可以通过按 Tab 键，将焦点移动到特定的控件。用户按 Tab 键，使焦点在窗体上的控件之间移动，然后单击切换按钮以改变 CommandButton1 的 TabStop 属性。当 TabStop 为 False 时，CommandButton1 将不接受用 Tab 键移来的焦点。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 ToggleButton1 的切换按钮。

  • 一至二个其他控件，如选项按钮或列表框。
Private Sub CommandButton1_Click()
    MsgBox "Clicked CommandButton1."
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1 = True Then
        CommandButton1.TabStop = True
        ToggleButton1.Caption = "TabStop On"
    Else
        CommandButton1.TabStop = False
        ToggleButton1.Caption = "TabStop Off"
    End If
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TabStop On"
    ToggleButton1.Value = True
    ToggleButton1.Width = 90
End Sub


Height、Width、Left、Top、ClientHeight、ClientWidth、ClientLeft、ClientTop 属性、TabStrip、图像控件属性示例

Height、Width、Left、Top、ClientHeight、ClientWidth、ClientLeft、 ClientTop 属性和 TabStrip、图像控件示例

当用户单击命令按钮时，下例将图像尺寸设置为 TabStrip 客户区的尺寸。这个代码示例使用下列属性：Height、Left、Top、Width、ClientHeigh、ClientLeft、ClientTop 和 ClientWidth。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 TabStrip1 的 TabStrip。

  • 名为 Image1 的图像。
Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Size Image to Tab Area"
    CommandButton1.WordWrap = True
    CommandButton1.AutoSize = True
End Sub
Private Sub CommandButton1_Click()
    Image1.ZOrder(fmFront)
    '将图像放在 TabStrip 的前面

    '从 TabStrip 的边缘来
    '测量 ClientLeft 和 ClientTop，
    '而不是从包含 TabStrip 的窗体的边缘测量。
    Image1.Left = TabStrip1.Left + TabStrip1.ClientLeft
    Image1.Top = TabStrip1.Top + TabStrip1.ClientTop
    Image1.Width = TabStrip1.ClientWidth
    Image1.Height = TabStrip1.ClientHeight

End Sub


Tag 属性示例

下例用 Tag 属性来储存用户窗体上每一控件的附加信息。用户单击一控件，然后单击命令按钮，有关控件的 Tag 的内容被返回文本框中。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的文本框。

  • 名为 CommandButton1 的命令按钮。

  • 名为 ScrollBar1 的滚动条。

  • 名为 ComboBox1 的组合框。

  • 名为 MultiPage1 的多页控件。
Private Sub CommandButton1_Click()
    TextBox1.Text = ActiveControl.Tag
End Sub

Private Sub UserForm_Initialize()
    TextBox1.Locked = True
    TextBox1.Tag = "Display area for Tag properties."
    TextBox1.AutoSize = True

    CommandButton1.Caption = "Show Tag of Current " _
        & "Control."
    CommandButton1.AutoSize = True
    CommandButton1.WordWrap = True
    CommandButton1.TakeFocusOnClick = False
    CommandButton1.Tag = "Shows tag of control " _
        & "that has the focus."

    ComboBox1.Style = fmStyleDropDownList
    ComboBox1.Tag = "ComboBox Style is that of " _
        & "a ListBox."

    ScrollBar1.Max = 100
    ScrollBar1.Min = -273
    ScrollBar1.Tag = "Max = " & ScrollBar1.Max _
        & " , Min = " & ScrollBar1.Min

    MultiPage1.Pages.Add
    MultiPage1.Pages.Add
    MultiPage1.Tag = "This MultiPage has " _
        & MultiPage1.Pages.Count & " pages."
End Sub


TakeFocusOnClick 属性示例

下例用 TakeFocusOnClick 属性，控制单击命令按钮时，该命令按钮是否接受焦点。用户先单击一个除 CommandButton1 之外的其他控件，然后再单击 CommandButton1，如果 TakeFocusOnClick 是 True，在单击 CommandButton1 后，CommandButton1 将接受焦点。用户可以通过单击切换按钮来改变 TakeFocusOnClick 的值。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 ToggleButton1 的切换按钮。

  • 一至二个其他控件，如选项按钮或列表框。
Private Sub CommandButton1_Click()
    MsgBox "Watch CommandButton1 to see if it " _
        & "takes the focus."
End Sub

Private Sub ToggleButton1_Click()
    If ToggleButton1 = True Then
        CommandButton1.TakeFocusOnClick = True
        ToggleButton1.Caption = "TakeFocusOnClick On"
    Else
        CommandButton1.TakeFocusOnClick = False
        ToggleButton1.Caption = "TakeFocusOnClick Off"
    End If
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Show Message"

    ToggleButton1.Caption = "TakeFocusOnClick On"
    ToggleButton1.Value = True
    ToggleButton1.Width = 90
End Sub


TextColumn 属性示例

下例用 TextColumn 属性来标识列表框中数据的列，该列为其 Text 属性提供数据。该示例把列表框的第三列设置为文本列。当从列表框中选定一个条目时，来自 TextColumn 的值将被显示在标签中。

该示例还演示如何用 AddItem 方法和 List 属性来加载一个多列列表框。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 ListBox1 的列表框。

  • 名为 TextBox1 的文本框。
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 3

ListBox1.AddItem "Row 1, Col 1"
ListBox1.List(0, 1) = "Row 1, Col 2"
ListBox1.List(0, 2) = "Row 1, Col 3"

ListBox1.AddItem "Row 2, Col 1"
ListBox1.List(1, 1) = "Row 2, Col 2"
ListBox1.List(1, 2) = "Row 2, Col 3"

ListBox1.AddItem "Row 3, Col 1"
ListBox1.List(2, 1) = "Row 3, Col 2"
ListBox1.List(2, 2) = "Row 3, Col 3"

ListBox1.TextColumn = 3
End Sub

Private Sub ListBox1_Change()
TextBox1.Text = ListBox1.Text
End Sub


Enabled、EnterFieldBehavior、SelLength、SelStart、SelText 属性示例

下例跟踪与选择相关的属性（SelLength、SelStart 和 SelText 属性）。当用户用键盘移动插入点以及扩展选定时，这些属性发生变化。该示例还使用了 Enabled 和 EnterFieldBehavior 属性。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 的一个大的文本框。

  • 名为 TextBox2 到 TextBox4 的在一列中的三个文本框控件。
Private Sub TextBox1_KeyUp(ByVal KeyCode As _
    MSForms.ReturnInteger, ByVal Shift As Integer)
    TextBox2.Text = TextBox1.SelStart
    TextBox3.Text = TextBox1.SelLength
    TextBox4.Text = TextBox1.SelText
End Sub
Private Sub UserForm_Initialize()
    TextBox1.MultiLine = True
    TextBox1.EnterFieldBehavior = _
        fmEnterFieldBehaviorRecallSelection

    TextBox1.Text = "Type your text here. Use " _
        & "CTRL+ENTER to start a new line."
End Sub


TopIndex 属性示例

下例识别显示在列表框中的顶层条目和在列表框内具有焦点的条目。该示例用 TopIndex 属性识别显示在列表框顶层的条目；用 ListIndex 属性来识别具有焦点的条目。用户可在列表框中选定一个条目。当用户选定条目或用户单击命令按钮时，TopIndex 和 ListIndex 的显示值被更新。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 TextBox1 的文本框。

  • 名为 Label2 的标签。

  • 名为 TextBox2 的文本框。

  • 名为 CommandButton1 的命令按钮。

  • 名为 ListBox1 的列表框。
Private Sub CommandButton1_Click()
    ListBox1.TopIndex = ListBox1.ListIndex
    TextBox1.Text = ListBox1.TopIndex
    TextBox2.Text = ListBox1.ListIndex
End Sub

Private Sub ListBox1_Change()
    TextBox1.Text = ListBox1.TopIndex
    TextBox2.Text = ListBox1.ListIndex
End Sub

Private Sub UserForm_Initialize()
    Dim i As Integer

    For i = 0 To 24
        ListBox1.AddItem "Choice " & (i + 1)
    Next i
    ListBox1.Height = 66
    CommandButton1.Caption = "Move to top of list"
    CommandButton1.AutoSize = True
    CommandButton1.TakeFocusOnClick = False

    Label1.Caption = "Index of top item"
    TextBox1.Text = ListBox1.TopIndex

    Label2. Caption = "Index of current item"
    Label2.AutoSize = True
    Label2.WordWrap = False
    TextBox2.Text = ListBox1.ListIndex
End Sub


TripleState 属性和开关控件示例

下例用 TripleState 属性，使 Null 可作为复选框和切换按钮的一个合法值。用户通过 ToggleButton2 控制 TripleState 的值。用户可根据 TripleState 的值来设置复选框或切换按钮的值。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含 ：

  • 名为 CheckBox1 的复选框。

  • 名为 ToggleButton1 的切换按钮。

  • 名为 ToggleButton2 的切换按钮。
Private Sub UserForm_Initialize()
    CheckBox1.Caption = "Value is True"
    CheckBox1.Value = True
    CheckBox1.TripleState = False

    ToggleButton1.Caption = "Value is True"
    ToggleButton1.Value = True
    ToggleButton1.TripleState = False

    ToggleButton2.Value = False
    ToggleButton2.Caption = "Triple State Off"
End Sub

Private Sub ToggleButton2_Click()
    If ToggleButton2.Value = True Then
        ToggleButton2.Caption = "Triple State On"
        CheckBox1.TripleState = True
        ToggleButton1.TripleState = True
    Else
        ToggleButton2.Caption = "Triple State Off"
        CheckBox1.TripleState = False
        ToggleButton1.TripleState = False
    End If
End Sub

Private Sub CheckBox1_Change()
    If IsNull(CheckBox1.Value) Then
        CheckBox1.Caption = "Value is Null"
    ElseIf CheckBox1.Value = False Then
        CheckBox1.Caption = "Value is False"
    ElseIf CheckBox1.Value = True Then
        CheckBox1.Caption = "Value is True"
    End If
End Sub

Private Sub ToggleButton1_Change()
    If IsNull(ToggleButton1.Value) Then
        ToggleButton1.Caption = "Value is Null"
    ElseIf ToggleButton1.Value = False Then
        ToggleButton1.Caption = "Value is False"
    ElseIf ToggleButton1.Value = True Then
        ToggleButton1.Caption = "Value is True"
    End If
End Sub


Value 属性示例

下例通过显示选定控件的 Value 属性，演示不同类型的控件能够具有的值。用户可按 Tab 键或在控件上单击，选中控件。根据控件的类型，用户可以通过以下几种方式为控件确定一个值：在控件文本区中键入、在控件上单击一次或多次、或者在控件内选定一个项目、页或标签。用户通过单击相应标签的命令按钮来显示选定控件的值。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 CommandButton1 的命令按钮。

  • 名为 TextBox1 的文本框。

  • 名为 CheckBox1 的复选框。

  • 名为 ComboBox1 的组合框。

  • 名为 CommandButton2 的命令按钮。

  • 名为 ListBox1 的列表框。

  • 名为 MultiPage1 的多页控件。

  • 名为 OptionButton1 和 OptionButton2 的两个选项按钮控件。

  • 名为 ScrollBar1 的滚动条。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 TabStrip1 的 TabStrip。

  • 名为 TextBox2 的文本框。

  • 名为 ToggleButton1 的切换按钮。
Dim i As Integer

Private Sub CommandButton1_Click()
    TextBox1.Text = "Value of " & ActiveControl.Name _
        & " is " & ActiveControl.Value
End Sub

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Get value of " _
        & "current control"
    CommandButton1.AutoSize = True
    CommandButton1.TakeFocusOnClick = False
    CommandButton1.TabStop = False

    TextBox1.AutoSize = True

    For i = 0 To 10
        ComboBox1.AddItem "Choice " & (i + 1)
        ListBox1.AddItem "Selection " & (100 - i)
    Next i

    CheckBox1.TripleState = True
    ToggleButton1.TripleState = True

    TextBox2.Text = "Enter text here."
End Sub


Zoom 事件、Zoom 属性、标签控件示例

Zoom 事件、Zoom 属性和标签控件示例

下例使用 Zoom 事件来计算 Zoom 属性的新值，并在适当的时候把滚动条加到窗体。该示例使用标签来显示当前数值。用户通过数值调节钮确定窗体的尺寸，然后单击命令按钮，设置 Zoom 属性中的数值。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 Label1 的标签。

  • 名为 SpinButton1 的数值调节钮。

  • 名为 CommandButton1 的命令按钮。

  • 放置在靠近窗体边缘位置的其他控件。
Private Sub CommandButton1_Click()
    Zoom = SpinButton1.Value
End Sub

Private Sub SpinButton1_SpinDown()
    Label1.Caption = SpinButton1.Value
End Sub

Private Sub SpinButton1_SpinUp()
    Label1.Caption = SpinButton1.Value
End Sub

Private Sub UserForm_Initialize()
    SpinButton1.Min = 10
    SpinButton1.Max = 400
    SpinButton1.Value = 100
    Label1.Caption = SpinButton1.Value

    CommandButton1.Caption = "Zoom it!"
End Sub

Private Sub UserForm_Zoom(Percent As Integer)
    Dim MyResult As Double

    If Percent > 99 Then
        ScrollBars = fmScrollBarsBoth
        ScrollLeft = 0
        ScrollTop = 0

        MyResult = Width * Percent / 100
        ScrollWidth = MyResult

        MyResult = Height * Percent / 100
        ScrollHeight = MyResult
    Else
        ScrollBars = fmScrollBarsNone
        ScrollLeft = 0
        ScrollTop = 0
    End If
End Sub


Max、Min、Zoom 属性 、框架、滚动条控件示例

下例用 Zoom 属性把窗体、页或者框架上显示的信息缩小或放大。该示例包括一个框架、一个框架中的文本框和一个滚动条。框架的放大倍数通过 Zoom 改变。用户可以用滚动条来设置 Zoom。文本框用来演示缩放效果。

该示例还使用 Max 和 Min 属性，来识别可接受的滚动条值的范围。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。该窗体要包括：

  • 名为 Label1 的标签。

  • 名为 ScrollBar1 的滚动条。

  • 名为 Label2 的第二个标签。

  • 名为 Frame1 的框架。

  • 位于 Frame1 中的名为 TextBox1 的文本框。
Private Sub UserForm_Initialize()
    ScrollBar1.Max = 400
    ScrollBar1.Min = 10
    ScrollBar1.Value = 100

    Label1.Caption = "10  -----Percent of " _
        & "Original Size---- 400"
    Label2.Caption = ScrollBar1.Value

    Frame1.TextBox1.Text = "Enter your text here."
    Frame1.TextBox1.MultiLine = True
    Frame1.TextBox1.WordWrap = True

    Frame1.Zoom = ScrollBar1.Value
End Sub

Private Sub ScrollBar1_Change()
    Frame1.Zoom = ScrollBar1.Value
    Label2.Caption = ScrollBar1.Value
End Sub


ZOrder 方法、文本框控件示例

下例设置文本框的 z-顺序，使用户可以显示整个文本框（通过将其置于 z-顺序的最前面）；或者可以把文本框置于其他控件的后面（通过将其置于 z-顺序的最后）。

若要使用该示例，请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含：

  • 名为 TextBox1 到 TextBox3 的三个文本框控件。

  • 名为 ToggleButton1 的切换按钮。
Private Sub ToggleButton1_Click()
If ToggleButton1.Value = True Then
    TextBox2.ZOrder (fmTop)
     '将 TextBox2 置于 z-顺序的顶端

    '更新 ToggleButton 题注来标识下一个状态
    ToggleButton1.Caption = "Send TextBox2 to back"
Else
    TextBox2.ZOrder (1)
    '将 TextBox2 置于 z-顺序的底端

    '更新 ToggleButton 题注来标识下一个状态
    ToggleButton1.Caption = "Bring TextBox2 to front"
End If
End Sub
Private Sub UserForm_Initialize()
'建立文本框，在窗体中显示 z-order 顺序
TextBox1.Text = "TextBox 1"
TextBox2.Text = "TextBox 2"
TextBox3.Text = "TextBox 3"

TextBox1.Height = 40
TextBox2.Height = 40
TextBox3.Height = 40

TextBox1.Width = 60
TextBox2.Width = 60
TextBox3.Width = 60

TextBox1.Left = 10
TextBox1.Top = 10

TextBox2.Left = 25      '将 TextBox2 重叠于 TextBox1 上
TextBox2.Top = 25

TextBox3.Left = 40      '将 TextBox3 重叠于 TextBox2 和TextBox1 之上
TextBox3.Top = 40

ToggleButton1.Value = False
ToggleButton1.Caption = "Bring TextBox2 to Front"
ToggleButton1.Left = 10
ToggleButton1.Top = 90
ToggleButton1.Width = 50
ToggleButton1.Height = 50

End Sub


加速键

单个字符，用作选取某个对象的快捷方式。先按住 Alt 键再紧接着按加速键，会将焦点定位到该对象上，并初始化与该对象关联的一个或多个事件。随对象的不同，被初始化的一个或多个特定事件也不同。如果代码与一个事件关联，则在事件被初始化时，将执行该代码。加速键也称为键盘加速键、快捷键、键盘快捷键。


背景色

显示屏幕或空窗口中客户区的颜色，在此显示所有的图形和颜色。


连接

描述一个内容与特定数据源关联的控件，如一个单元格或工作表中的一个单元格区域。


清除

将一项设置改变为“关闭”状态或删去一个值。


客户区

一个窗口中，供应用程序显示输出（如文本或图形）的部分。


上下文 ID

应用程序中唯一的与某个特定对象相对应的数字或串。上下文 ID 可用来创建应用程序与其相对应的帮助主题之间的链接。


控件组

概念或逻辑上相关的控件的集合。概念上相关的控件通常被看作一个整体，但它们并不一定会互相影响。逻辑上相关的控件相互之间会发生影响。例如，在一组选项按钮中设置某个按钮时，会同时将该按钮组中的其它按钮的值设置为 “False”。


控件提示

一个简短的语句，用以描述一个控件，一个“Page”或一个“Tab”。当用户将鼠标在某个控件上停留片刻，而没有单击时，将出现控件提示。控件提示与工具提示类似。“Microsoft 窗体”在设计时为开发人员提供工具提示，而开发人员在运行时为最终用户提供控件提示。


光标

一段能够向应用程序返回多行数据的程序。结果集合上的光标指示了结果集合上的当前位置。


循环

按定义好的次序在一组对象上移动。


数据格式

一个数据单元的结构或外观，例如文件、数据库记录、电子表格中的单元或字处理文档中的文本。


数据源

与控件连接的数据的位置，例如工作表中的一个单元格。数据源的当前值可存储在控件的 Value 属性中，但是该控件并不存储此数据，而只是显示存储在数据源中的信息。


主控件

“格式”菜单中的“对齐”命令和“使大小相同”命令的参照基准。在对齐各个控件时，所选择的各控件将向主控件对齐。在设置控件大小时，会将所选各控件设置为主控件的大小。

主控件由白色的尺寸控点所标明。而其他所选控件的尺寸控点为黑色。


放置源

在拖放操作中，被拖动的选定文本或对象。


前景色

当前所选的用来在屏幕上绘图或显示文本的颜色。在单色显示器中，前景色即为位图或其它图形的颜色。


网格块

相邻两个网格点间的空间。


输入法编辑器（IME）

输入方法编辑器（IME）

一个应用程序，它将键入的字符翻译成某种 DBCS 语言（例如日语或汉语）的字符。当用户键入时，IME 显示各种可能的等价形式，用户从中选择最为合适的条目。


被继承的属性

已获得另一个类的特征的属性。


键盘状态

一个返回值，用以标识哪些键被按下以及修改键 Shift、Ctrl 和 Alt 是否被按下。


OLE 容器控件

一种 Visual Basic 控件，用以在一个 Visual Basic 应用程序中链接并嵌入其它应用程序中的对象。


OLE 状态码

数据结构中的错误编号部分，它返回各种错误状态的信息。该数据结构由“对象链接与嵌入 (OLE)”所定义。


占位符

出于安全的原因，用于屏蔽或隐藏另一个字符的字符。例如，当用户键入口令时，在屏幕上会用星号替代每一个被键入的字符。


属性页

一组属性，表示为一页具有标签的属性表格。


RGB

一种颜色定值系统，将颜色描述为由红 (R)，绿 (G) 和蓝 (B) 的组合。颜色被定义为三个整数的集合 (R，G，B)，其中每个整数在 0-255 之间取值。0 值表明完全没有某种色彩成份，255 表明某种色彩成份的最高浓度。


系统颜色

操作系统为一种特定类型的监视器和视频适配器所定义的颜色。在 Windows 中每一种颜色与用户界面的一个特定部分（例如窗口标题或菜单）关联。


目标

一个对象，用户将拖动对象放置到其上。


透明

当背景不可见时，描述对象的背景。可看到对象后面的任何事物，例如，应用程序中作为背景来使用的一个图像或图片。利用 BackStyle 属性可使背景成为透明。


未连接

描述与工作表单元格无关的控件。与之相反，连接的控件作为工作表单元格的数据源，通过工作表单元格对控件的值进行显示和编辑。