标题: Excel编程概念之:【创建自定义对话框】
ljjk5
元帅
Rank: 1


荣誉会员奖章
UID 46706
精华 1
积分 99426
帖子 49690
威望 554
金币 48489
热心 505
阅读权限 100
注册 2007-2-25
状态 离线
Excel编程概念之:【创建自定义对话框】

可用下述过程创建自定义对话框:
1. 创建“用户窗体”
在 Visual Basic 编辑器中的“插入”菜单上,单击“用户窗体”。
若要创建自定义对话框,就必须创建“用户窗体”。若要创建“用户窗体”,请单击 Visual Basic 编辑器中“插入”菜单上的“用户窗体”。
可用“属性”窗口更改窗体的名称、行为和外观。例如,若要更改窗体的标题,请设置“标题”属性。

2. 向“用户窗体”中添加控件
在“工具箱”中查找要添加的控件,并将其拖动到窗体中。
若要向用户窗体中添加控件,请在“工具箱”中查找要添加的控件,将该控件拖到窗体上,然后拖动控件上的调整柄,直至控件的外边框成为所需的大小和形状。
注意   如果将控件(或若干“成组”的控件)从窗体拖回到“工具箱”,将创建该控件的一个模板,该模板可被重新使用。对于实现应用程序的标准界面,这是非常有用的功能。
向窗体添加了控件之后,可用 Visual Basic 编辑器中“格式”菜单上的命令调整控件的对齐方式和间距。

3. 设置控件属性
在设计模式下,用鼠标右键单击某个控件,然后单击快捷菜单上的“属性”以显示“属性”窗口。
可以在设计时(即宏运行之前)设置某些控件属性。在设计模式下,用鼠标右键单击某一控件,然后单击“属性”以显示属性窗口。属性的名称显示在该窗口的左边一列中,属性的值显示在右边一列中。在属性名称的右边输入新值可以设置属性的值。

4. 初始化控件
可在窗体显示之前在某个过程中初始化控件,或者在窗体的 Initialize 事件中添加代码。
可在运行时用宏中的 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
5. 编写事件过程
所有的控件都有一组预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件。可以编写事件发生时所运行的事件过程。
向对话框或文档中添加了控件之后,应添加事件处理过程,以决定控件如何响应用户的操作。
用户窗体和控件有一组预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件,而“用户窗体”的 Initialize 事件将在加载窗体时运行。
若要编写控件或窗体的事件过程,请双击窗体或控件以打开模块,再从“过程”下拉列表框内选择事件。
事件过程包括控件的名称。例如,命令按钮 Command1 的 Click 事件过程的名称为 Command1_Click。
如果在事件过程中添加了代码,然后又更改了控件的名称,那么代码将保留在以原来名称命名的事件过程中。
例如,假定为控件 Commmand1 的 Click 事件添加了代码,然后将该控件重命名为 Command2。当双击 Command2 时,在 Click 事件过程中将看不到任何代码。您需要将代码从 Command1_Click 移到 Command2_Click 中。
若要使开发过程更为简单,在编写代码之前,正确命名控件不失为一种好习惯。

6. 显示对话框
可用 Show 方法显示“用户窗体”。
若要在 Visual Basic 编辑器中测试对话框,请单击 Visual Basic 编辑器中“运行”菜单上的“运行子过程/用户窗体”。
若要用 Visual Basic 代码显示对话框,请使用 Show 方法。下例显示了名为“UserForm1”的对话框。
Private Sub GetUserName()
    UserForm1.Show
End Sub

7. 代码运行时使用控件值
有些属性可在运行时进行设置。用户对对话框所做的更改在对话框关闭后将丢失。
某些控件属性可在 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-13 08:30
信产部ICP备案:京ICP备05066424号 北京市公安局网监备案:1101050648号

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