VBA实验复习.docx
《VBA实验复习.docx》由会员分享,可在线阅读,更多相关《VBA实验复习.docx(14页珍藏版)》请在冰豆网上搜索。
VBA实验复习
实验
实验三:
1、编程计算分段函数
,并上机运行。
的值用Excel表格输入(x=range(“B2”)),计算出
的结果在Excel表格中输出。
如下图:
第一题
请输入X的值:
计算出Y的值:
要求运行程序,输入x的值(分别为x<0、0<=x<10、x>=10三种情况),检查输出的y值是否正确。
Suba9()
x=Range("B1").Value
Ifx<0Then
Range("B2").Value=x
ElseIfx>=0Andx<10Then
Range("B2").Value=2*x+1
Else
Range("B2").Value=4*x-3
EndIf
EndSub
3、编写程序并运行程序。
输入一个学生的百分制成绩,要求输出相应的等级。
90分以上为“A”,80~90分为“B”,70~79分为“C”,60至69分为“D”,60分以下为“E”。
要求:
1在机上输入上面题目上出现的数据验证程序,并检查结果是否正确。
2再运行程序,验证输入负数和大于100的数值时候,程序是否通知用户“输入数据错误”。
Suba2()
x=Range("c8").Value
Ifx<0Then
Range("c9").Value="输入数据错误!
"
ElseIfx>=0Andx<60Then
Range("c9").Value="你不及格,等级是:
E"
ElseIfx>=60Andx<=69Then
Range("c9").Value="你通过了,等级是:
D"
ElseIfx>=70Andx<=79Then
Range("c9").Value="你通过了,等级是:
C"
ElseIfx>=80Andx<=89Then
Range("c9").Value="你通过了,等级是:
B"
ElseIfx>=90Andx<=100Then
Range("c9").Value="你通过了,等级是:
A"
Else
Range("c9").Value="输入数据错误!
"
EndIf
EndSub
4、用for循环语句,在Excle中显示九九乘法表。
Subcfb()
Dimi,jAsInteger
Range("d1").Value="九九乘法表"
Fori=1To9
Forj=1Toi
Cells(i+1,j).Value=i&"*"&j&"="&i*j
Nextj
Nexti
EndSub
实验四:
1、从键盘上输入一个3位整数,按倒序输出这3位整数.要求当用户输入的不是3位数时候提示重新输入.
Subb()
DimbAsInteger
b=InputBox("请输入一个3位数")
Ifb>100Andb<=999Then
MsgBoxbMod10&(bMod100)\10&b\100
Else
b=InputBox("请重新输入一个3位数")
EndIf
EndSub
2、从键盘上输入3个数按升序输出(按从小到大输出)。
方法②
Subbijiao()
Staticx,y,zAsInteger
DimtAsInteger
x=InputBox("输入x:
")
y=InputBox("输入y:
")
z=InputBox("输入z:
")
Ifxt=x
x=y
y=t
EndIf
Ifz>xThen
MsgBoxz&">"&x&">"&y
ElseIfx>zAndz>yThen
MsgBoxx&">"&z&">"&y
Else
MsgBoxx&">"&y&">"&z
EndIf
EndSub
Suba2()
a=Range("b4").Value
b=Range("c4").Value
c=Range("d4").Value
Ifa>bThen
max1=a
min1=b
Else
max1=b
min1=a
EndIf
Ifmax1t=max1
max1=c
ElseIfct=min1
min1=c
EndIf
Range("b5").Value=min1
Range("c5").Value=t
Range("d5").Value=max1
EndSub
3、已经知道三角形三条边长a,b,c,求三角形面积公式为:
,其中
要求程序上要体现两边之和大于第3边,同时3条边的数值从键盘上输入.
Suba3()
a=Range("c7").Value
b=Range("d7").Value
c=Range("e7").Value
s=(a+b+c)/2
Ifa+bRange("f7").Value="条件不符合!
"
ElseIfa+cRange("f7").Value="条件不符合!
"
ElseIfb+cRange("f7").Value="条件不符合!
"
Else
f=Sqr(s*(s-a)*(s-b)*(s-c))
EndIf
Range("c8").Value=f
EndSub
4、编写一程序判断这个数是否可以被3整除.
Suba4()
a=Range("b12").Value
IfaMod3<>0Then
Range("b13").Value="不能被3整除!
"
Else
Range("b13").Value="能被3整除!
"
EndIf
EndSub
实验五:
1、从键盘上输入一个X,若X为数字则显示“你输入的是数字”,若X为小写字母则显示“你输入的是小写字母”,若X为大写字母则显示“你输入的是大写字母”,否则显示“你输入的是汉字或其他字符”
方法②
Subeg6()
x=Range("c2").Value
Ifx>="a"Andx<="z"Then
Range("c3").Value="你输入的是小写字母。
"
ElseIfx>="A"Andx<="Z"Then
Range("c3").Value="你输入的是大写字母。
"
ElseIfx>="0"Andx<="9"Then
Range("c3").Value="你输入的是数字。
"
EndIf
EndSub
(备注:
用if语句实现)
方法①
Subeg1()
x=InputBox("请输入一个字符:
")
SelectCasex
Case"0"To"9"
MsgBox"那您输入的是数字"
Case"a"To"z"
MsgBox"那您输入的是小写字母!
"
Case"A"To"Z"
MsgBox"那您输入的是大写字母!
"
EndSelect
EndSub
3、百钱买百鸡问题:
公鸡5文钱买1只,母鸡3文钱买1只,小鸡1文钱买3只,用100文钱,买100只鸡,问公鸡、母鸡、小鸡各有几只?
Suba()
Dimx,yAsInteger
Forx=1To20
Fory=1To33
If5*x+3*y+(100-x-y)/3=100Then
Range("b11").Value=x
Range("b12").Value=y
Range("b13").Value=100-x-y
EndIf
Nexty
Nextx
EndSub
实验六:
2、编写程序解决爱因斯坦的阶梯问题。
设有一阶梯,每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每步跨5阶,最后余4阶;每步跨6阶,最后余5阶;只有每步跨7阶时,正好到阶梯顶。
求至少有多少阶梯?
(不超过300)
Subab()
Fori=1To300
IfiMod2=1AndiMod3=2AndiMod5=4AndiMod6=5AndiMod7=0Then
MsgBoxi
EndIf
Nexti
EndSub
实验七:
1、应用数组知识:
求不确定人数的最高分(从键盘上输入人数)。
Subaa()
Dimcj(),rs,avg,sum,maxAsInteger
sum=0
rs=InputBox("请输人数!
")
ReDimcj(0Tors)
Fori=0Tors-1
cj(i)=InputBox("请输入第"&i+1&"个人的成绩!
")
sum=sum+cj(i)
Next
max=cj(0)
Fori=1Tors-1
Ifmaxmax=cj(i)
EndIf
Next
avg=sum/rs(可以省略)
MsgBox"人数为:
"&rs&"!
总分为:
"&sum&"!
平均分为:
"&avg&"!
最高分为:
"&max
EndSub
2、编写一循环程序,计算:
s=1+12+123+1234+12345+…。
项目数通过键盘指定。
Subaaa()
Dimx,sum,tempAsLong?
x=InputBox("请输项数!
")
sum=0
temp=0
Fori=1Tox
temp=temp+i
sum=sum+temp
temp=temp*10
Next
MsgBox"项数和为:
"&sum
EndSub
实验八:
3、编写一过程,实现:
sheet1中的单元格中第1、3行的字体设置为加粗;将区域A4:
C5,E5:
G7,H列的值设置为100。
Sub c()
Range("1:
1").Font.Bold = True
Range("3:
3").Font.Bold = True
Union(Columns(8), Rows(5)).Value = 100
Range("a4:
c5").Value = 100
Range("a5:
g7").Value = 100
End Sub
5、在Excel中,编写程序将当前工作表第1行的所有数据元素逆置。
比如,原始数据为1,5,6,9,8,7,3,2,结果应为2,3,7,8,9,6,5,1
!
实验九:
4、编写一程序,输出所有“对等数”。
“对等数”是指一个三位数,其各位数字的和与各位数字的积的积等于该数本身。
例如:
144=(1+4+4)*(1*4*4)
实验十:
3、根据例1.12要求完成“XX职工资料表”,在该表中输入身份证号码,编写一个函数从身份证号码求生日(sr),编写一函数从身份证号码求性别(xb)。
程序调试通过后,写出该例的关键知识点。
实验十一:
3、”销售情况”的excel文档的price工作表保存了某食品公司出售的肉类的品名、价格,sales工作表保存的是该公司部分肉类的销售清单。
编写一过程,核对sales工作表中的单价跟price工作表中的单价是否一致,不同在sales表中用不同的背景颜色标记出来,并在备注中显示价格错。
实验十二:
2、复选钮的使用(编写代码实现下图效果)
1.PrivateSubCheckBox1_Click()
IfCheckBox1.Value=TrueThen
TextBox1.Font.Bold=True
Else
TextBox1.Font.Bold=False
EndIf
EndSub
4、根据上课演示,编写一下代码。
要求输入用户名为“VBA”,密码为“123456”时窗体不见,若输入密码或用户名不对时提示“用户名或密码有误”。
PrivateSubCommandButton1_Click()
IfTextBox1.Text="VBA"AndTextBox2.Text=123456Then
MsgBox"登入!
"
Else
MsgBox"用户名或密码有误!
"
EndIf
UserForm1.Hide
EndSub
5、编写代码实现根据学生姓名查询学生成绩。
6、编写自定义函数,自定义函数zj:
根据“职工编号”来,得出职工的“职称”。
(规定:
工龄在三年及以下的,职称为:
助理工程师;三年以上五年以下的,职称为:
工程师;五年以上的为:
高级工程师)
注:
“职工号”第4位开始的4位数字为该职工的“入职年限”)
实验十三:
5、编写窗体过程,输入考生信息及查询考生信息。
(窗体如下图)
实验十四:
4、根据上课演示,编写一下代码。
要求:
A、excel表格如下所示:
B、通过窗体控件,将控件中的相应内容想写到excel表格的对应位置。
(控件如下)
C、当学校没有选择时院系为空
当学校选择“福州大学”则院系可以选择“阳光学院”,“管理学院”,“智诚学院”
当学校选择“福建师范大学”则院系可以选择“外语学院”,“美术学院”,“数计学院”
当学校选择“福建农林大学”则院系可以选择“生命科学学院”,“林学院”,“金山学院”
D、要求:
姓名,性别,学校,院系,年龄不能为空。
实验十五:
2、控件实例
A、初始化窗体:
添加复合框1(学历),内容为大专,本科,研究生,博士。
添加复合框2(籍贯),内容为福建,广东
要求:
当复合框2(籍贯)为空,则复合框3(籍贯)为空。
当复合框2(籍贯)为福建,则复合框3(籍贯)可选为福州,厦门,泉州。
当复合框2(籍贯)为广东,则复合框3(籍贯)可选为广州,深圳。
B、添加按钮:
点击添加按钮,将窗体上对应的内容填写到excel表的对应位置。
要求所有控件不能为空。
C、取消按钮:
清空窗体上所有控件内容。
D、退出按钮:
隐藏窗体
E、查询按钮:
在窗体中输入工号,点查询按钮,则将excel表中对应的信息填到窗体对应位置。
否则显示“工号不存在,请重新检查!
”
实验十七:
1、在自定义工具栏中添加四个按钮并为其添加相应的图标,如下图: