标题: Excel编程概念之:【在文档中使用 ActiveX 控件】
ljjk5
元帅
Rank: 1


荣誉会员奖章
UID 46706
精华 1
积分 99426
帖子 49690
威望 554
金币 48489
热心 505
阅读权限 100
注册 2007-2-25
状态 离线
Excel编程概念之:【在文档中使用 ActiveX 控件】

就如同可向自定义对话框中添加 ActiveX 控件一样,也可向文档直接添加控件,从而可以为用户提供一种复杂的方法来直接与宏进行交互,而不必被对话框所干扰。可用下列过程向文档添加 ActiveX 控件。有关更多的在 Microsoft Excel 中使用 ActiveX 控件的特定信息,请参阅在工作表上使用 ActiveX 控件。
1. 向文档中添加控件
若要向文档中添加控件,请先显示“控件工具箱”,单击要添加的控件,然后在文档中单击鼠标。拖动控件上的调整柄,直至控件的外边框成为所需的大小和形状。
注意   如果将控件(或若干“成组”的控件)从窗体拖回到“控件工具箱”,将创建该控件的一个模板,该模板可被重新使用。对于实现应用程序的标准界面,这是非常有用的功能。
2. 设置控件属性
可以在设计时(即宏运行之前)设置某些控件属性。在设计模式下,用鼠标右键单击某一控件,然后单击“属性”以显示属性窗口。属性的名称显示在该窗口的左边一列中,属性的值显示在右边一列中。在属性名称的右边输入新值可以设置属性的值。
3. 初始化控件
可在运行时用宏中的 Visual Basic 代码初始化控件。例如,可以向列表框填充内容、设置文本值或设置选项按钮。
下例使用 AddItem 方法向列表框添加数据,然后设置文本框的值并显示窗体。
Private Sub GetUserName()
    With UserForm1
        .lstRegions.AddItem "North"
        .lstRegions.AddItem "South"
        .lstRegions.AddItem "East"
        .lstRegions.AddItem "West"
        .txtSalesPersonID.Text = "00000"
        .Show
        ' ...
    End With
End Sub
还可以在窗体的 Initialize 事件中用代码设置窗体上控件的初始值。在 Initialize 事件中设置控件的初始值的好处在于:初始化代码与窗体存储在一起。这样,如果把该窗体复制到其他项目中,那么运行 Show 方法显示对话框时,其中的控件将被初始化。
Private Sub UserForm_Initialize()
    UserForm1.lstNames.AddItem "Test One"
    UserForm1.lstNames.AddItem "Test Two"
    UserForm1.txtUserName.Text = "Default Name"
End Sub
可在某一过程中初始化控件。
4. 编写事件过程
所有的控件都有一组预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件。可以编写事件发生时所运行的事件过程。
向对话框或文档中添加了控件之后,应添加事件处理过程,以决定控件如何响应用户的操作。
用户窗体和控件有一组预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件,而“用户窗体”的 Initialize 事件将在加载窗体时运行。
若要编写控件或窗体的事件过程,请双击窗体或控件以打开模块,再从“过程”下拉列表框内选择事件。
事件过程包括控件的名称。例如,命令按钮 Command1 的 Click 事件过程的名称为 Command1_Click。
如果在事件过程中添加了代码,然后又更改了控件的名称,那么代码将保留在以原来名称命名的事件过程中。
例如,假定为控件 Commmand1 的 Click 事件添加了代码,然后将该控件重命名为 Command2。当双击 Command2 时,在 Click 事件过程中将看不到任何代码。您需要将代码从 Command1_Click 移到 Command2_Click 中。
若要使开发过程更为简单,在编写代码之前,正确命名控件不失为一种好习惯。
5. 代码运行时使用控件值
某些控件属性可在 Visual Basic 代码运行时设置和返回。下例将文本框的 Text 属性设置为“Hello”。
TextBox1.Text = "Hello"
当窗体关闭时,用户在窗体中输入的数据将丢失。如果在窗体卸载后再返回该窗体上的控件值,那么所返回的将是控件的初始值,而不是用户所输入的值。
如果要保存窗体上所输入的数据,可在窗体仍处于运行状态时,将信息保存到模块级的变量中。下例显示窗体,并保存窗体数据。
' Code in module to declare public variables.
Public strRegion As String
Public intSalesPersonID As Integer
Public blnCancelled As Boolean
' Code in form.
Private Sub cmdCancel_Click()
    Module1.blnCancelled = True
    Unload Me
End Sub
Private Sub cmdOK_Click()
    ' Save data.
    intSalesPersonID = txtSalesPersonID.Text
    strRegion = lstRegions.List(lstRegions.ListIndex)
    Module1.blnCancelled = False
    Unload Me
End Sub
Private Sub UserForm_Initialize()
    Module1.blnCancelled = True
End Sub
' Code in module to display form.
Sub LaunchSalesPersonForm()
    frmSalesPeople.Show
    If blnCancelled = True Then
        MsgBox "Operation Cancelled!", vbExclamation
    Else
        MsgBox "The Salesperson's ID is: " &
            intSalesPersonID & _
            "The Region is: " & strRegion
    End If
End Sub

网友 ljjk5 签名 - 网友社区 ===
顶部
[广告] 免费域名(Free Subdomain) 免费空间(Free hosting) PR查询(Google Pagerank)



当前时区 GMT+8, 现在时间是 2008-10-8 15:52
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

Powered by Discuz! 5.5.0
清除 Cookies - 联系我们 - 网友俱乐部 - Archiver - WAP