1、1 Dim A,B As Integer2 A=13 B=24 A=4+bA=3A在本程序段中有在本程序段中有3个不同的值,这就是变!个不同的值,这就是变!Dim s1 As String /变长类型Dim s2 As String*10 /定长类型s1=dddkdk s2=d1234567890sssss Dim A As Boolean Dim B As Boolean A=35 B=TrueDim d1,d2 As Dated1=#1 Jul 98#D1的取值是1998年7月1号d2=#12/2/2000#D2的值是2000年12月2号Dim ar As Variantar=12ar=s
2、tring typear=abc&arar=12.23在本例中,在本例中,ar的类型是不定的!的类型是不定的!假设一个班有假设一个班有20个同学,每个同学有个同学,每个同学有5门课程,可以定义一个门课程,可以定义一个20行行5列的二维数组来保存他们的成绩列的二维数组来保存他们的成绩Dim stu(1 To 20,1 To 5)As Single这条命令定义了一个二维表格,如下所示。这条命令定义了一个二维表格,如下所示。stu(1,1)=78stu(1,2)=90stu(1,3)=87stu(1,4)=88stu(1,5)=76数组访问方法数组访问方法78年龄:年龄:30学历:硕士学历:硕士身高
3、:身高:173cm体重:体重:69公斤公斤说自己的年龄说自己的年龄学习学习授课授课李立李立属性属性方法方法对象属性语法规则对象属性语法规则李立李立.年龄年龄=32李立李立.体重体重=70方法的调用也要按这种语法规则方法的调用也要按这种语法规则李立李立.学习学习李立李立.授课授课Sub 子程序名子程序名 子程序代码子程序代码 End SubSub 子程序名子程序名(p1,p2,p3)子程序代码子程序代码 End Sub1 Sub Main()2 HouseCalc 99800,431003 Call HouseCalc(380950,49500)4 CircleArea(4)5 CircleAr
4、ea 46 Message7 End SubSub HouseCalc(price As Single,wage As Single)If 3*wage 1500 Then rate=0.1 Else rate=0.05 If 条件 Then 语句组1 Else 语句组2 End IfFunction abc(a,b)If a b Then t=a a=b b=tEnd Ifabc=aEnd Function例如例如If 条件条件1 Then 语句组语句组1ElseIf 条件条件2 Then 语句组语句组2 ElseIf 条件条件n Then 语句组语句组nElse 语句组语句组n+1End
5、If 1000S%101000S750%7750S500%5500S250%2250S0DSelect Case 测试表测试表达式达式Case 表达式表达式1 语句组语句组1Case 表达式表达式2 语句组语句组2 Case Else 语句组语句组n End Select Function AddSalary(职称职称)职称作为一个参数职称作为一个参数 Select Case 职称职称 Case 教授教授,高级工程师高级工程师 AddSalary=150 Case 副教授副教授 AddSalary=130 Case 讲师讲师 AddSalary=100 Case 助教助教 AddSalary=
6、80 Case 工程师工程师 AddSalary=140 Case 助工助工 AddSalary=90 End SelectEnd FunctionFor counter=start To end step 步长步长 循环语句循环语句1 循环语句循环语句2 循环语句循环语句3 循环语句循环语句nNext counter2000S%102000S1500%71500S1200%51200S800%2800S500%1500S0DFunction countrate(salary As Double)这个函数计算公积金的百分比这个函数计算公积金的百分比 Dim rate As Double If
7、salary 2000 Then rate=0.1 ElseIf salary 1500 Then rate=0.07 ElseIf salary 1200 Then rate=0.05 ElseIf salary 1000 Then rate=0.02 ElseIf salary 800 Then rate=0.01 Else rate=0 End If countrate=rateEnd Function数函的例比金积公算计数函的例比金积公算计Sub CountData()For i=3 To 1236 从工作表的第3行开始计算。第3行中的是第1位职工工资 r=countrate(Cell
8、s(i,2)计算出第i位职工的公积金比例 Cells(i,3)=r 将第i位职工的公积金比例填入本行的第3列中 Cells(i,3).Style=Percent 将公积金比例的格式设置为百分比 Cells(i,4)=r*Cells(i,2)计算第1位职工的公积金并填入本行的第4列中 Cells(i,5)=Cells(i,2)-Cells(i,4)计算第i位职工的应发工资并填入第5列中NextEnd SubWhile 判定条件判定条件 语句语句1 语句语句2 Wend 第一种结构为:第一种结构为:Do While 判定条件判定条件 Loop第二种结构为:第二种结构为:Do Loop While
9、判定条件判定条件第三种结构为:第三种结构为:Do Until判定条件判定条件 Loop 第四种结构为:第四种结构为:Do Loop Until 判定条件判定条件Sub CountDataB()i=3 第第1位职工在第位职工在第3行行While Not(IsEmpty(Cells(i,2)从工作表的第从工作表的第3行开始计算行开始计算 r=countrate(Cells(i,2)计算出第计算出第i位职工的公积金比例位职工的公积金比例 Cells(i,3)=r 把第把第i位职工的公积金比例填入本行的第位职工的公积金比例填入本行的第3列中列中 Cells(i,3).Style=Percent 把公积
10、金比例的格式设置为百分比把公积金比例的格式设置为百分比 Cells(i,4)=r*Cells(i,2)计算第计算第1位职工的公积金并填入本行的第位职工的公积金并填入本行的第4列中列中 Cells(i,5)=Cells(i,2)-Cells(i,4)计算第计算第i位职工的应发工资并填入本行第位职工的应发工资并填入本行第5列中列中 i=i+1 计算下一位职工的公积金计算下一位职工的公积金WendEnd SubSub CountDataC()i=3 Do r=countrate(Cells(i,2)Cells(i,3)=r Cells(i,3).Style=Percent Cells(i,4)=r*
11、Cells(i,2)Cells(i,5)=Cells(i,2)-Cells(i,4)i=i+1Loop Until(IsEmpty(Cells(i,2)End Sub Public N声明一个全局变量用于保存教师总人数声明一个全局变量用于保存教师总人数Public tea(100,5)As Variant声明一个全局数组保存教师的所有数据,声明一个全局数组保存教师的所有数据,Sub readData()Dim i,j As Integer定义两个只能在本宏内部分使用的局部变量定义两个只能在本宏内部分使用的局部变量Worksheets(教师总表教师总表).Activate 激活教师工作表激活教师
12、工作表N=1While Not IsEmpty(Cells(N,1)如果教师工作表中的第一列数据非空,就将如果教师工作表中的第一列数据非空,就将For i=1 To 5该行的数据读入全局数组中该行的数据读入全局数组中tea(N,i)=Cells(N,i)Next iN=n+1读入一个教师的数据后,教师的人数增加一个读入一个教师的数据后,教师的人数增加一个WendEnd SubDim i,j,k As IntegerSub man()Sheets.Add 插入一个工作表,在其中保存男教师的数据插入一个工作表,在其中保存男教师的数据Active Sheet.Name=男教师男教师修改工作表的名称为
13、修改工作表的名称为“男教师男教师”For j=1 To 5Cells(1,j)=tea(1,j)读入第一行数据即表头到二维数组的第一行读入第一行数据即表头到二维数组的第一行Next jk=2k统计男教师的人数统计男教师的人数For i=2 To N从数组的第从数组的第2行开始分析数据行开始分析数据If tea(i,3)=男男Then如果数组的第如果数组的第3列中的数据为列中的数据为“男男”For j=1 To 5Cells(k,j)=tea(i,j)将将“男男”教师的数据从数组读入工作表教师的数据从数组读入工作表Next jk=k+1End IfNext iEnd Sub这是绝大多数这是绝大多
14、数Wndows编程工具都支持的工具编程工具都支持的工具编程工具,一定要掌握编程工具,一定要掌握其用法!其用法!属性对话框中重要的设计属性对话框中重要的设计工具,它标准而通用,通工具,它标准而通用,通过它能够轻松地修改与设过它能够轻松地修改与设置窗体中各控件的大小、置窗体中各控件的大小、颜色、名字等。颜色、名字等。在窗体中添加一在窗体中添加一标签标签控控件,然后通过属性对话件,然后通过属性对话框修改该控件的背景色、框修改该控件的背景色、标题内容和字体大小标题内容和字体大小1、选择要编写事件程、选择要编写事件程序的对象序的对象2、选择事件、选择事件3、输入程序代码、输入程序代码Private Su
15、b UserForm_Initialize()Worksheets(“教师总表教师总表”).Activate 激活教师工作表激活教师工作表 n=2 第第1次显示工作表次显示工作表“教师总表教师总表”的第的第2行数据行数据 display 调用显示宏,将工作表中的数据显示在窗体的文本框调用显示宏,将工作表中的数据显示在窗体的文本框中中End SubPrivate Sub 上一位上一位_Click()If n 2 Then n=n 1 工作表行号减工作表行号减1,Call display 将工作表的第将工作表的第n行显示在文本框中行显示在文本框中End SubSub display()TextBo
16、x1.Value=Cells(n,1)将工作表的第将工作表的第1列中的数据显示在列中的数据显示在TextBox1文本框中文本框中TextBox2.Value=Cells(n,2)TextBox3.Value=Cells(n,3)TextBox4.Value=Cells(n,4)TextBox5.Value=Cells(n,5)TextBox6.Value=Cells(n,6)TextBox7.Value=Cells(n,7)TextBox8.Value=Cells(n,8)End Sub Private Sub退出退出_Click()teacher.HideEnd SubPrivate Sub
17、 新教师新教师_Click()While Not(IsEmpty(Cells(n,1)定位到工作表定位到工作表的最后一行的最后一行 n=n+1 Wend displayEnd SubSub Msg1()MsgBox 第一次使用对话框第一次使用对话框 a=Sin(35)b=MsgBox(a,vbOKCancel)End Sub运行结果运行结果Sub Msg2()Dim Msg,Style,Title,Response,MyString Msg=警告,系统有严重错误!警告,系统有严重错误!+Chr(13)&Chr(10)_ +想继续进行下面的操作想继续进行下面的操作?Style=vbYesNo+v
18、bCritical 定义按钮。同时显示按钮、图标定义按钮。同时显示按钮、图标 Title=警告警告 定义标题定义标题 Response=MsgBox(Msg,Style,Title)调用调用MsgBox函数函数 If Response=vbYes Then 用户按下用户按下“是是”MyString=Yes 完成某操作完成某操作 Else 用户按下用户按下“否否”MyString=No 完成某操作完成某操作 End IfEnd Sub Sub ss()Worksheets(Sheet1).Activate Dim Message,Titl1,Default,MyValue Message=请输入
19、用户名请输入用户名设置提示信息设置提示信息 Title=用户名用户名设置标题设置标题 Default=张三英张三英设置默认值设置默认值 MyValue=InputBox(Message,Title,Default)用变量作参数调用用变量作参数调用InputBox函数函数 pass=InputBox(请输入密码请输入密码,密码密码)直接调用直接调用InputBox函数输入函数输入用户密码用户密码 If pass=111111 Then Cells(1,1)=用户名用户名 Cells(1,2)=密码密码 Cells(2,1)=MyValue Cells(2,2)=pass Else MsgBox(
20、密码不正确,你无权进入本系统密码不正确,你无权进入本系统)End IfEnd Sub 暂不可用的菜单暂不可用的菜单将弹出对话框的菜单将弹出对话框的菜单具有相级菜单具有相级菜单下面还有菜单项下面还有菜单项Sub quit()For k=1 To MenuBars.Count If MenuBars(k).Caption=教师管理教师管理Then For i=MenuBars(教师管理教师管理).Menus.Count To 1 Step-1 For j=MenuBars(教师管理教师管理).Menus(i)MenuItems.Count To Step-1 MenuBars(教师管理教师管理).Menus(i).MenuItems(j).Delete Next j MenuBars(教师管理教师管理).Nenus(i).Delete Next i End If Next k MenuBars(教师管理教师管理).Delete MenuBars(xlWorksheet).Reset MenuBars(xlWorksheet).ActivateEnd Sub100 结束语结束语