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

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

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



                FindId = empLoc   
                Exit Function   
              End If   
         Next   
    End Function   
     函数过程FindId将含有窗体列表框中当前选择的员工数据的行号返回到主调过程。工作表中 
     的数据搜索基于变量extract的内容,它存储员工的唯一号码。员工ID的搜索被限制与工作表 
     的第一列,并从集合的第一个成员放置的位置开始搜索,这样使搜索更快一些。你不要在工 
    作表整个使用的区域里搜索。想想如果你不只一次地使用了窗体,但是,自定义集合的内容 
    不会包含前面输入的员工。  
13。 输入下述过程cmdUpdate_Click:  
    Private Sub cmdUpdate_Click()   
          If optHighlighted = False And optAll = False Then   
              MsgBox 〃Click the 'Highlighted Employee' or 〃 _   
               & 〃 'All Employees' option button。〃   
              Exit Sub   
          End If   
          If Not IsNumeric(txtRaise) Then   
               MsgBox 〃This field requires a number。〃   
               txtRaise。SetFocus   
               Exit Sub   
          End If   
          If optHighlighted = True And _   
               lboxPeople。ListIndex = …1 Then   
               MsgBox 〃Click the name of the employee。〃   
               Exit Sub   
          End If   
          If lboxPeople。ListIndex  …1 And _   
               optHighlighted = True And _   
               optAmount。Value = True And _   
               txtRaise。Value  〃〃 Then   
               extract = CEmployees。Item(lboxPeople。ListIndex + 1)。Id   
               MsgBox extract   
               Call FindId   
               MsgBox empLoc   
               choice = 2   
               amount = txtRaise   

                                         227 

… 页面 244…

           CEmployees。Item(lboxPeople。ListIndex + 1)。Salary = _   
                 emp。CalcNewSalary(choice; _   
                 CEmployees。Item(lboxPeople。ListIndex + 1)。Salary; amount)   
           Range(〃D〃 & empLoc)。Formula = CEmployees。 _   
                 Item(lboxPeople。ListIndex + 1)。Salary   
           cmdEmployeeList。Value = True   
      ElseIf lboxPeople。ListIndex  …1 And _   
           optHighlighted = True And _   
           optPercent。Value = True And _   
           txtRaise。Value  〃〃 Then   
           extract = CEmployees。Item(lboxPeople。ListIndex + 1)。Id   
           MsgBox extract   
           Call FindId   
           MsgBox empLoc   
           CEmployees。Item(lboxPeople。ListIndex + 1)。Salary = _   
                 CEmployees。Item(lboxPeople。ListIndex + 1)。Salary + _   
                 (CEmployees。Item(lboxPeople。ListIndex + 1)。Salary * _   
                 txtRaise / 100)   
           Range(〃D〃 & empLoc)。Formula = CEmployees。 _   
                 Item(lboxPeople。ListIndex + 1)。Salary   
           cmdEmployeeList。Value = True   
      ElseIf optAll = True And _   
           optPercent。Value = True And _   
           txtRaise。Value  〃〃 Then   
           For Each emp In CEmployees   
                 emp。Salary = emp。Salary + ((emp。Salary * txtRaise) _   
                      / 100)   
                 extract = emp。Id   
                 MsgBox extract   
                 Call FindId   
                 MsgBox empLoc   
                 Range(〃D〃 & empLoc)。Formula = emp。Salary   
           Next   
           emp cmdEmployeeList。Value = True   
      ElseIf optAll = True And _   
           optAmount。Value = True And _   
           txtRaise。Value  〃〃 Then   
           For Each emp In CEmployees   
                 emp。Salary = emp。Salary + txtRaise   
                 extract = emp。Id   
                 MsgBox extract   
                 Call FindId   
                 MsgBox empLoc   
                 Range(〃D〃 & empLoc)。Formula = emp。Salary   
           Next emp   
           cmdEmployeeList。Value = True   
      Else   
           MsgBox 〃Enter data or select an option。〃   
      End If   
End Sub   

                                      228 

… 页面 245…

有了过程cmdUpdate_Click,你就可以使用确定的百分比或者特定量来修改薪水。可以为选定的员 
工或者列表框和集合里面列出的所有员工更新薪水。cmdUpdate_Click过程核实用户是否选择了适 
当的选项按钮,然后在文字框里输入增加数字。取决于你选择了哪个选项按钮,给某个员工或者所 
有员工更新的薪水量可以是按照百分比,也可以是按照某个固定的量。薪水的更改也会反映在工作 
表里。图11…15显示James Nolan的薪水,以按百分之十增加了该薪水。在文字框里面输入负数,你 
可以按照特定的百分比或者量减少薪水。  

                                                                                 
图11…5 可以按照特定的百分比或者固定量增加或者减少员工的薪水  
14。 选择“插入”|“模块”在当前工程里插入一个标准模块,重命名该模块为WorkAndPay,输入 
    下述过程来显示窗体Employees and Salaries:  
     Sub ClassDemo( )   
          Salaries。Show   
     End Sub   
15。 运行过程ClassDemo,使用自定义类。  
你可以点击窗体的背景并且按下F5,运行窗体Salaries,或者你也可以在工作表里放置一个按钮, 
并将过程ClassDemo指定给它(参见第十章,如何将按钮放在工作表里)。  

15。观察 VBA 过程的执行  

为了帮助你理解代码运行时会发生什么,以及你的自定义对象如何工作,我们来逐步运行过程 
cmdSave_Click。本练习也可以说是第十三章里将包括的调试技巧的简单介绍。  
1。  在工程浏览窗口,选择Salaries窗体,并点击窗口上面的查看代码按钮  
2。  出现Salaries代码窗口时,从代码窗口左上角的复合框里选择过程cmdSave  
3。  在下述代码行的左边框上点击一下,设置断点:  
     If txtLastName。Value = 〃〃 Or txtFirstName。Value = 〃〃 Or _   
     txtSalary。Value = 〃〃 Then   

                                          229 

… 页面 246…

                                                                            
图11…6 边框上的红色圆圈代表断点。当VBA遇到带断点的语句时,它就会自动切换到代码窗口并且 
显示该白字红底的文本。  
4。  在工程浏览窗口,选中模块WorkAndPay并点击查看代码按钮  
5。  将光标放在过程ClassDemo里的任意位置,并且按下F5,或者选择“运行”|“运行子过程/用 
    户窗体”  
6。  当窗体出现时,在Last Name,First Name和Salary文字框里输入数据,然后点击窗体的按钮 
    Save。现在VB将切换到代码窗口,因为它碰到了过程cmdSave_Click第一行的断点。  

                                                                            
图11…7 当VB运行过程遇到断点时,它会切换到代码窗口,并在中断过程的语句的左边边框上显示 
一个黄色箭头  

                                          230 

… 页面 247…

7。  通过按F8逐句运行代码,VB运行当前语句,并且自动向前移动到下一句然后停止执行。当前语 
    句的边框上显示了黄色箭头,并且为黄色底色。不断地按F8逐句执行该过程。当VB遇到With emp 
    语句时,它会切换到过程Class_Initialize。  

                                                                               
图11…8 当VB遇到对对象emp的引用的时候,它就会出去执行过程Class_Initialize。在它执行完该 
过程里的语句之后,VBA会返回到过程cmdSave_Click里面。  
当VB遇到语句Cells(Index; 1)。Formula = emp。ID时,它就会出去执行类模块CEmployee里的过程 
Property Get Id。  

                                                                               
图11…9 对自定义对象属性的读取要通过过程Property Get来实现。  
8。  使用F8键,追踪过程cmdSave_Click的执行,直到结束。  
    当VBA遇到过程的结束(End Sub)时,黄色加亮将会关闭。这时候,点击屏幕下面的视窗任务 
    栏上的Excel按钮返�
返回目录 上一页 下一页 回到顶部 赞(2) 踩(3)
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!