VBA程序的设计范例.docx
- 文档编号:29903802
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:14
- 大小:74.27KB
VBA程序的设计范例.docx
《VBA程序的设计范例.docx》由会员分享,可在线阅读,更多相关《VBA程序的设计范例.docx(14页珍藏版)》请在冰豆网上搜索。
VBA程序的设计范例
高考VBA程序设计解析
一、累加和问题:
1、基本问题
问题:
编程计算1+2+3+…+100;
程序界面:
源代码:
PrivateSubCommand3_Click()
DimsAsInteger
DimiAsInteger
s=0
Fori=1To100Step1
s=s+i
Nexti
Text1.SetFocus
Text1.Value=s
EndSub
PrivateSubCommand4_Click()
DoCmd.CloseacForm,"VBA程序设计例1"
EndSub
2、问题拓展
拓展1:
编程计算1+3+5+7+…+99;
源代码修改:
Fori=1To99Step2
s=s+i
Nexti
拓展2:
编程计算2+4+6+8+…+100;
源代码修改:
Fori=2To100Step2
s=s+i
Nexti
拓展3:
编程计算1+2+3+…+N;
程序界面:
源代码:
PrivateSubCommand10_Click()
DimiAsInteger
DimsAsInteger
Text3.SetFocus
IfTrim(Text3.Text)=Space(0)Then
MsgBox"请输入N的值!
",vbOKOnly
ExitSub
ElseIfVal(Text3.Text)<1Then
MsgBox"请输入大于1的正整数!
",vbOKOnly
ExitSub
EndIf
s=0
Fori=1ToVal(Text3.Value)Step1
s=s+i
Nexti
Text8.SetFocus
Text8.Value=s
EndSub
拓展4:
编程计算1+(1+2)+(1+2+3)+(1+2+3+4)+…+(1+2+3+4+…+100);
程序界面:
源代码:
PrivateSubCommand3_Click()
DimiAsInteger,jAsInteger
Dims1AsInteger,s2AsDouble
s1=0
s2=0
Fori=1To100Step1
s1=0
Forj=1Toi
s1=s1+j
Nextj
s2=s2+s1
Nexti
Text1.SetFocus
Text1.Text=s2
EndSub
拓展5:
编程计算1+(1+3)+(1+3+5)+(1+3+5+7)+…+(1+3+5+7+…+99);
源代码:
PrivateSubCommand3_Click()
DimiAsInteger,jAsInteger
Dims1AsInteger,s2AsDouble
s1=0
s2=0
Fori=1To50Step1
s1=0
Forj=1Toi*2-1step2
s1=s1+j
Nextj
s2=s2+s1
Nexti
Text1.SetFocus
Text1.Text=s2
EndSub
3、算法相关问题
编程计算1*2*3*…*100;
提示:
存变量的数据类型的确定;
二、排序问题
1、基本问题
问题:
提示用户输入两个数,比较其大小;
源代码:
PrivateSubCommand4_Click()
Dima1AsString
Dima2AsString
Dimb1AsInteger
Dimb2AsInteger
Text0.SetFocus
a1=Trim(Text0.Text)
Text2.SetFocus
a2=Trim(Text2.Text)
Ifa1=Space(0)Ora2=Space(0)Then
MsgBox"请输入两个待比较的数!
",vbOKOnly
ExitSub
EndIf
b1=Val(a1)
b2=Val(a2)
Text8.SetFocus
Ifb1 Text8.Text="小于" ElseIfb1=b2Then Text8.Text="等于" Else Text8.Text="大于" EndIf EndSub 2、问题拓展 拓展1: 有一组数: 3,2,7,1,5,4,12,10,8,6,请找出这组数的最小(大)值; 程序界面: 源代码: PrivateSubCommand4_Click() DimmaxvalueAsInteger DimminvalueAsInteger Dimarr(1To10)AsInteger arr (1)=3 arr (2)=2 arr(3)=7 arr(4)=1 arr(5)=5 arr(6)=4 arr(7)=12 arr(8)=10 arr(9)=8 arr(10)=6 maxvalue=arr (1) minvalue=arr (1) Fori=2To10 Ifarr(i)>maxvalueThen maxvalue=arr(i) EndIf Ifarr(i) minvalue=arr(i) EndIf Nexti Text2.SetFocus Text2.Text=maxvalue Text3.SetFocus Text3.Text=minvalue EndSub 拓展2: 有一组数: 3,2,7,1,5,4,12,10,8,6,请按升序排序输出这组数; 程序界面: 源代码: PrivateSubCommand4_Click() Dimarr(1To10)AsInteger arr (1)=3 arr (2)=2 arr(3)=7 arr(4)=1 arr(5)=5 arr(6)=4 arr(7)=12 arr(8)=10 arr(9)=8 arr(10)=6 Fori=1To9 Forj=i+1To10 Ifarr(i)>arr(j)Then temp=arr(i) arr(i)=arr(j) arr(j)=temp EndIf Nextj Nexti Text2.SetFocus Fori=1To10 Text2.Text=Text2.Text&arr(i)&"," Nexti EndSub 拓展3: 输入一组数,请按升序排序输出这组数; 程序界面: 源代码: PrivateSubCommand6_Click() Dimarr(1To10)AsInteger DimiAsInteger DimjAsInteger DimtempAsInteger Dims1AsString Fori=1To10 arr(i)=InputBox("请输入第"&i&"个数: ") s1=s1&arr(i)&"," Nexti Text1.SetFocus Text1.Value=s1 Fori=1To9 Forj=i+1To10 Ifarr(i)>arr(j)Then temp=arr(i) arr(i)=arr(j) arr(j)=temp EndIf Nextj Nexti Text3.SetFocus Fori=1To10 Text3.Text=Text3.Text&arr(i)&"," Nexti EndSub 三、窗体设计 1、基本问题 源代码: PrivateSubCommand11_Click() OnErrorGoToErr_Command11_Click DoCmd.GoToRecord,,acFirst Exit_Command11_Click: ExitSub Err_Command11_Click: MsgBoxErr.Description ResumeExit_Command11_Click EndSub PrivateSubCommand12_Click() OnErrorGoToErr_Command12_Click DoCmd.GoToRecord,,acPrevious Exit_Command12_Click: ExitSub Err_Command12_Click: MsgBoxErr.Description ResumeExit_Command12_Click EndSub PrivateSubCommand13_Click() OnErrorGoToErr_Command13_Click DoCmd.GoToRecord,,acNext Exit_Command13_Click: ExitSub Err_Command13_Click: MsgBoxErr.Description ResumeExit_Command13_Click EndSub PrivateSubCommand14_Click() OnErrorGoToErr_Command14_Click DoCmd.GoToRecord,,acLast Exit_Command14_Click: ExitSub Err_Command14_Click: MsgBoxErr.Description ResumeExit_Command14_Click EndSub 2、问题拓展 拓展1: 窗体查询1 源代码: ①SQL查询部分: SELECT*FROM学生学籍 WHERElikeforms! 窗体查询_主子窗体1.text2.text; ②子窗体的源对象设置为查询对象; ③查询按钮单击事件代码: PrivateSubCommand6_Click() DimstudnameAsString Text2.SetFocus studname=Trim(Text2.Text) Ifstudname=Space(0)Then MsgBox"请输入学生! ",vbOKOnly Else Me.Child8.Requery EndIf EndSub 拓展2: 窗体查询2 源代码: ①SQL查询部分: SELECT学生学籍.班级编号,学生学籍.学号,学生学籍.,学生成绩.学期,学生成绩.语文,学生成绩.数学,学生成绩.英语,学生成绩.专业一,学生成绩.专业二,学生成绩.总分 FROM学生学籍INNERJOIN学生成绩ON(学生学籍.学号=学生成绩.学号)AND(学生学籍.班级编号=学生成绩.班级编号) WHERElikeforms! 窗体查询_主子窗体2.text2.text; ②子窗体的源对象设置为查询对象; ③查询按钮单击事件代码: PrivateSubCommand6_Click() DimstudnameAsString Text2.SetFocus studname=Trim(Text2.Text) Ifstudname=Space(0)Then MsgBox"请输入学生! ",vbOKOnly Else Me.Child8.Requery EndIf EndSub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VBA 程序 设计 范例
![提示](https://static.bdocx.com/images/bang_tan.gif)