友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
九色书籍 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

excel_vba_编程教程(完整版)-第60章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!



              。AddItem 〃work/home/school”   
         End With   
         'select the first element in the bo box 选择复合框第一个项目  
         Me。cboxWhereUsed。ListIndex = 0   
         'select the first element in the list box 选择列表框的第一个项目  
         Me。lboxSystems。ListIndex = 0   
         'load a picture file for the Hardware option 上载Hardware选项的图片文件  
         Me。picImage。Picture = LoadPicture(〃C:cd。bmp〃)   
   End Sub   
   你可以使用关键字Me代替窗体的实际名称来简化事件过程代码,例如,除了使用语句:  
    InfoSurvey。cboxWhereUsed。ListIndex = 0   
   之外,你也可以使用下面的语句,节约打字时间:  
   Me。cboxWhereUsed。ListIndex = 0   
   特别是当窗体名称很长时,这种技术很有用。注意,列表框的第一个成员的索引号为0,因此, 
   如果想要选择列表里的第二个项目的话,你就必须设置其ListIndex属性为1。  
   该过程结束时给图像控件上载图片,请确保该指定的图片文件可以在指定的文件夹里找到。如 
   果你没有该文件,那么输入你想显示的图片文件的完整路径。  
   过程UserForm_Initialize调用外部过程(ListHardware)用硬件成员来填充它的列表框控件。  
5。 激活ShowSurvey模块并且输入过程ListHardware,如下所示:  
   Sub ListHardware()   
         With InfoSurvey。lboxSystems   
              。AddItem 〃CD…ROM Drive〃   
              。AddItem 〃Printer〃   
              。AddItem 〃Fax〃   

                                         202 

… 页面 219…

               。AddItem 〃Network〃   
               。AddItem 〃Joystick〃   
               。AddItem 〃Sound Card〃   
               。AddItem 〃Graphics Card〃   
               。AddItem 〃Modem〃   
               。AddItem 〃Monitor〃   
               。AddItem 〃Mouse〃   
               。AddItem 〃Zip Drive〃   
               。AddItem 〃Scanner〃   
         End With   
    End Sub   
    既然你已经准备好了UserForm_Initialize过程和ListHardware过程,那么你可以运行窗体查看 
    结果了。  
6。 在工作表Info Survey,使用Survey按钮来启动窗体,窗体显示后,用户选择合适的选项或者点 
    击Cancel按钮。当用户点击Software选项按钮时,下面的列表框应该显示不同的项目,同时, 
    图像控件应该上载一个不同的图片。下一节将解释如何编写这些事件。  

30。编写过程填充列表框控件  

在前面的部分,你准备了ListHardware过程用Hardware成员来填充lboxSystems列表框,你可以使 
用同样的方法将Software项目上载到该列表框。  
1。 激活ShowSurvey模块,并输入过程ListSoftware代码,如下所示:  
    Sub ListSoftware()   
         With InfoSurvey。lboxSystems   
               。AddItem 〃Spreadsheets〃   
               。AddItem 〃Databases〃   
               。AddItem 〃CAD Systems〃   
               。AddItem 〃Word Processing〃   
               。AddItem 〃Finance Programs〃   
               。AddItem 〃Games〃   
               。AddItem 〃Accounting Programs〃   
               。AddItem 〃Desktop Publishing〃   
               。AddItem 〃Imaging Software〃   
               。AddItem 〃Personal Information Managers〃   
         End With   
    End Sub   

31。编写过程控制选项按钮  

1。 激活窗体InfoSurvey,并双击位于Main Interest框架里的Software选项按钮  
2。  当代码窗口出现optSoft_Click过程构架的时候,选中该代码并按下Delete键  
3。 点击右上角的复合框向下箭头,并且选择Change事件过程,VB将会自动为你输入optSoft_Change 
    过程的开头和结尾  
4。 输入optSoft_Change过程代码,显示如下:  
    Private Sub optSoft_Change()   
         Me。lboxSystems。Clear   
         Call ListSoftware   
         Me。lboxSystems。ListIndex = 0   
         Me。picImage。Picture = LoadPicture(〃C:Books。bmp〃)   
    End Sub   
    过程optSoft_Change开始时,使用Clear方法将列表框lboxSystems的当前成员列表清除,下一 
    条语句调用ListSoftware过程用软件成员来填充列表框,换句话说,当用户点击Software按钮 
    时,程序将硬件成员清除然后添加软件成员。如果你在添加新成员之前,不清除列表框的话, 
                                          203 

… 页面 220…

    这些新成员就会附加在当前清单后面。语句Me。lboxSystems。ListIndex = 0选择列表里的第一 
    条成员。该过程里的最后一条语句为图像控件上载图片文件,请确保换上你电脑里有效图片的 
    完整路径。  
    因为用户在选择Software按钮之后,还可能要重新选择Hardware按钮,所以,你必须给optHard 
    选项按钮创建一个类似的Change事件过程。  
5。 在optSoft_Change过程下面,输入下述过程optHard_Change:  
   Private Sub optHard_Change()   
         Me。lboxSystems。Clear   
         Call ListHardware   
         Me。lboxSystems。ListIndex = 0   
         Me。picImage。Picture = LoadPicture(〃C:cd。bmp〃)   
    End Sub   
6。 点击工作表Info Survey里的按钮Survey启动窗体来查看结果。当你点击Software选项按钮时, 
    你应该看到列表框里的软件成员,同时,图像控件也应该显示了相应的图片。点击Hardware选 
    项按钮后,列表框应该显示适当的硬件成员,同时,图像控件应该显示一张不同的图片。  
7。 点击窗体右上角的关闭按钮,关闭该窗体  

32。编写过程同步文字框和旋转按钮  

Info Survey窗体在旋转按钮前面有个文字框,用户可以直接在文字框里输入或者使用旋转按钮, 
在文字框里表明Hardware或者Software成员使用的百分率。文字框的初始值为0,假设用户输入了 
10,现在要用旋转按钮将它增加到15。要激活这个动作的话,那么该文字框和旋转按钮必须得同步。 
每个对象需要有一个单独的Change事件过程。  
1。 在旋转按钮上单击右键,并选择快捷菜单上的查看代码  
2。 输入过程spPercent_Change过程,如下所示:  
   Private Sub spPercent_Change()  
         txtPercent。Value = spPercent。Value   
    End Sub   
    使用旋转按钮将会导致文字框数值增加或减少。  
3。 输入下述过程txtPercent_Change:  
   Private Sub txtPercent_Change()   
         Dim entry As String   
         On Error Resume Next   
         entry = Me。txtPercent。Value   
         If entry 》 100 Then   
               entry = 0   
               Me。txtPercent。Value = entry   
         End If   
         spPercent。Value = txtPercent。Value   
    End Sub   
    过程txtPercent_Change确保只有从0到100之间的数值可以输入在文字框里,该过程使用了On  
    Error Resume Next语句来忽略错误数据的输入。如果用户输入了一个非数字数据(或者大于100 
    的数字),VB将会将文字框的值重新设置为0。每次点击旋转按钮,文字框里的数字将会增加或 
    者减少1。  

33。编写过程关闭用户窗体  

显示窗体之后,用户可能需要通过按Esc键或者点击Cancel按钮来取消窗体,可以准备一个使用Hide 
方法的简单过程,让窗体从屏幕上消失。  
1。 双击Cancel按钮,并且输入下述过程cmdCancel_Click:  
   Private Sub butCancel_Click()   
         Me。Hide   
    End Sub   
                                          204 

… 页面 221…

    方法Hide将对象隐藏,但是不从内存里清除它。这样,当用户看不到窗体的时候,你的VBA过程 
    仍然可以在屏幕后面使用该窗体的对象和属性。使用Unload方法可以将窗体从屏幕上卸退并且 
    从内存里清除:  
    Unload Me  
当窗体卸退后,所有相关的内存都会被收回,用户不能再和窗体相互交流了,窗体的对象也不能为 
你的VBA过程访问了,除非使用Load语句再将窗体放置于内存里。  

34。转移窗体数据到工作表  

当用户点击OK按钮,窗体的选择应该写入工作表中,用户就可以通过点击Cancel按钮随时退出窗体。  
1。 双击OK按钮,并输入过程cmdOK_Click,如下所示:  
    Private Sub butOK_Click()   
         Me。Hide   
         r = ApplicationuntA(Range(〃A:A〃))   
         Range(〃A1〃)。Offset(r + 1; 0) = Me。lboxSystems。Value   
         If Me。optHard。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 1) = 〃*〃   
         End If   
         If Me。optSoft。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 2) = 〃*〃   
         End If   
         If Me。chkIBM。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 3) = 〃*〃   
         End If   
         If Me。chkNote。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 4) = 〃*〃   
         End If   
         If Me。chkMac。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 5) = 〃*〃   
         End If   
         Range(〃A1〃)。Offset(r + 1; 6) = Me。cboxWhereUsed。Value   
         Range(〃A1〃)。Offset(r + 1; 7) = Me。txtPercent。Value   
         If Me。optMale。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 8) = 〃*〃   
         End If   
         If Me。optFemale。Value = True Then   
               Range(〃A1〃)。Offset(r + 1; 9) = 〃*〃   
         End If   
         Unload Me   
    End Sub  
    过程butOK_Click以隐藏用户窗体开始。语句:  
    r = ApplicationuntA(Range(〃A:A〃))  
使用了VB函数CountA来计算A列里含有数据的单元格数目,函数的结果被赋予变量r。下一句:  
    Range(〃A1〃)。Offset(r + 1; 0) = Me。lboxSystems。Value  
将列表框选择的项目输入到A列最后一个使用了的单元格的下面一个单元格(r+1)。接下来,是好 
几条条件语句。第一条告诉VB,当Hardware选项按钮被选中时,在B列适当的单元格里输入一个星 
号。B列位于A列的右边一列,因此,在Offset方法第二个参数的位置为1。第二条If语句,当用户 
选择Software选项按钮的话,就在C列输入星号。类似的指令记录复选框的实际数值。在G列,将会 
输入Where Used复合框里所选的项目。H列显示Percent (%) Used 文字框里的数字,而I列和J列则 
分别显示提高调查人员的性别。  

                                           205 

… 页面 222…

35。使用 Info Survey 应用程序  

现在,你的应用程序已经准备好做最后测试了。  
1。 切换到Excel界面,Info Survey工作表,并且点击Survey按钮  
2。  当窗体出现时,选择适当的选项,并点击OK  
3。 激活窗体几次,每次选择不同的选项  
4。 保存Chap10。xls变化  

36。应用程序示例 2:学生和考试  

近年来,许多Windows应用软件越来越依赖于那些将各种控件组合在一起的对话框。“选项”对话框 
就是很好的例子,使用Tab页,你可以给一个对话框里的很多控件提高设置。用Tab页组合�
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!