您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 总结/报告 > Excel高级应用VBA实验题目解析
Esy021、选定sheet1工作表,合并A1:C1单元格,并输入“TEST”,背景颜色设置为浅黄色,字体颜色设置为红色,字体大小设置为10磅。SubMacro1()'Macro1Macro'宏由xu录制,时间:2013/3/26'Application.Left=201.25Application.Top=61.75Range(A1:C1).SelectWithSelection.HorizontalAlignment=xlCenter.VerticalAlignment=xlBottom.WrapText=False.Orientation=0.AddIndent=False.IndentLevel=0.ShrinkToFit=False.ReadingOrder=xlContext.MergeCells=FalseEndWithSelection.MergeRange(A1:C1).SelectActiveCell.FormulaR1C1=TESTRange(A1:C1).SelectWithSelection.HorizontalAlignment=xlCenter.VerticalAlignment=xlCenter.WrapText=False.Orientation=0.AddIndent=False.IndentLevel=0.ShrinkToFit=False.ReadingOrder=xlContext.MergeCells=TrueEndWithWithSelection.Font.Name=宋体.FontStyle=常规.Size=10.Strikethrough=False.Superscript=False.Subscript=False.OutlineFont=False.Shadow=False.Underline=xlUnderlineStyleNone.ColorIndex=3EndWithWithSelection.Interior.ColorIndex=6.Pattern=xlSolid.PatternColorIndex=xlAutomaticEndWithEndSub2在sheet1上创建“窗体”命令按钮并指定“宏”代码sy22,补充代码完成:从键盘输入一个整数n,输出如下图形。其中每个“*”在单元格中水平和垂直方向都要求居中。Subsy22()DimnAsInteger,iAsInteger,jAsInteger'第1空n=InputBox(输入行数)'从键盘输入数据并存放到变量nSheets(Sheet1).Cells.ClearContents'清除sheet1工作表中单元格的内容Fori=1Ton'循环打印,输出n行*Forj=1To2*i-1'每行输出奇数(2*i-1)个*,如:1,3,5个Cells(i,n-i+j).Value=*NextjNextiCells(1,n).Activate'激活A列N行的单元格ActiveCell.CurrentRegion.Select'选定单元格所在的当前区域WithSelection.Font.Size=16'字体大小.Font.Bold=True'字体加粗.HorizontalAlignment=xlCenter'水平方向居中.VerticalAlignment=xlCenter'垂直方向居中nEndWithEndsubEsy031.调用EXCEL的RAND和INT内部函数,在A列的1—10行输入序号1—10,在B列的1—10行填入0—1之间的随机数,在C列的1—10行填入两位正整数,最后在C列的11行求出该列的最大数(调用MAX函数)。'请参照程序上下文补充完整的语句Subsy31()DimkAsIntegerDimaAsString,bAsString,cAsStringFork=1To10a=A&kb=B&kc=C&kRange(a).Value=k'在A列的1-10行输入序号1-10Range(b).Value=Rnd()'在B列的1-10行填入0-1之间的随机数Range(c).Value=10+Int(90*Rnd())'在C列的1-10行填入两位正整数NextkSetmyr=Worksheets(Sheet1).Range(C1:C10)Range(c11)=WorksheetFunction.Max(myr)'在C列的11行求出该列的最大数(调用MAX函数)EndSubEsy04输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并用Msgbox函数输出结果。分析:用IF语句实现Subpdzi()DimstrCAsString'定义变量strC为字符型strC=InputBox(请输入字符)'第1空,利用InputBox函数输入字符放到strC中IfUCase(strC)=AAndUCase(strC)=ZThen'判断输入字符是否为A~Z(其中UCase函数为将字符转换成大写字符的函数)MsgBox(strC&是字母)'第2空,利用MsgBox函数输出判断结果ElseIfstrC=0AndstrC=9Then''第3空,判断输入字符是否为0~9MsgBox(strC&是数字)'利用MsgBox函数输出判断结果Else'第4空MsgBox(字符&strC&既不是字母,也不是数字)'利用MsgBox函数输出判断结果EndIfEndSub2某学校的职工人事数据存在Excel工作表中。现要按职称提升每位职工的工资,各种职称的工资增长情况如下:教授150、副教授130、讲师100、助教80、高级工程师150、工程师140、助工90。用select语句编写计算增加工资的过程。Subaddsalary()r=ActiveCell.Row'活动单元格为要求得增加工资的单元格,计算活动单元格的行号t=Cells(r,3)'第1空,定位“职称”所在的单元格SelectCasetCase教授,高级工程师'第2空ActiveCell=150Case副教授ActiveCell=130Case讲师ActiveCell=100Case助教ActiveCell=80Case工程师ActiveCell=140Case助工ActiveCell=90EndSelect'第3空,EndSub3:某教师讲授了一门考查课程,他平时及期末考试都用百分制衡量学生的成绩,设该教师的成绩表如图所示。学校要求最后的成绩都用等级制。百分制与等级制的转换规则为:60分以下为不及格,60~70分为及格,70~80分为中等,80~90分为良,90~100分为优。编写一个百分制与等级制的转换过程实现成绩的等级转换。Subchange()score=ActiveCell.Offset(0,-1).Value'第1空SelectCasescoreCaseIs=90'第2空ActiveCell=优CaseIs=80ActiveCell=良CaseIs=70ActiveCell=中CaseIs=60ActiveCell=及格CaseElse'第3空ActiveCell=不及格EndSelectEndSub4:打开Excel工作簿EC404.xls,在A2,B2和C2单元格输入a,b,c的值,单击最大值按钮,在D2显示这三个数的最大值。解题思路:假设三个数中的第一个数是最大值,用这个假定的最大值分别跟剩下的两个数比较,如果假定的最大值小于其它两个数,则最大值为较大的那个数。Submax()DimaAsDouble,bAsDouble,cAsDouble,maxAsDoublea=Val(Cells(2,1))b=Val(Cells(2,2))c=Val(Cells(2,3))max=a'第1空IfmaxbThenmax=b'第2空EndIfIfmaxcThen'第3空max=c'第4空EndIfCells(2,4)=maxEndSub5:编写程序:创建一简单应用程序,单击窗体,利用InputBox函数如(图2)所示显示对话框,设定固定密码就是“password”(注意输入的大小写);若输入密码正确与否,利用MsgBox函数分别显示如(图3)和(图4)所示来提示用户输入的密码正确与不正确的对话框。(图2)(图3)(图4)提示:请根据图3和图4中的界面填写第2空和第3空,Msgbox函数的格式为:Msgbox提示信息,按钮数目及形式,对话框标题Subpass()t=InputBox(请输入密码,输入密码)Ift=passwordThen'第1空MsgBox恭喜你,密码正确!,0,正确'第2空ElseMsgBox对不起!你是非法用户!,vbCritical,拒绝'第3空EndIfEndSubEsy05实验1:编写程序,求1+2+3+….+10的和并输出其结果。解题思路:该题用For……Next结构实现累加。Subsum()Rem求1+2+..+10的和并输出DimsAsIntegers=0'第1空Fori=1To10'第2空s=s+i'第3空NextiMsgBox(1+2+3+...+10=&s)'第4空EndSub实验2:输入任意多个正整数,编写程序求其和与平均值。当输入数小于0时结束数据的输入。解题思路:该题用DoWhile……Loop结构实现累加,While后面需要有控制循环是否继续的条件,请注意While与Until的区别。Subcomput()DimsumAsLong'sum用来保存所输入数的和DimdataAsIntegerDimkAsInteger'k为记数器,记录输入数的个数k=0data=InputBox(请输入数据:)DoWhiledata=0'第1空sum=sum+data'第2空k=k+1'第3空data=InputBox(请输入数据:)LoopMsgBox一共输入了&k&个数。_&vbCrLf&其和为&sum&其平均值为:&sum/kEndSub实验3:编写程序计算SUM=1+1*2+1*2*3+……+1*2*3*…*100的和。解题思路:该题用Do……Loop结构实现累积与累加,目标是求100项的累加,而每一项是一个累积式。Submulti()DimsumAsDoubleDimiAsIntegerDimtAsDoublei=1:t=1:sum=0DoWhilei=100'第1空t=t*i'第2空sum=sum+t'第3空i=i+1'第4空LoopMsgBox(1+1*2+1*2*3+...+1*2*3*...*100=&sum)EndSub实验4:打开Excel工作簿E504.xls,编写程序,将当前工作表中第1行从指定位置m开始的n个数按相反顺序重新排列。例如,原数列为:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20。从第5个数开始,将10个数进行逆序排列,则得到新数列为:1,2,3,4,14,13,12,11,10,9,8,7,6,5,15,16,17,18,19,20。Sub逆置()i=Cells(6,12)'起始位置j=i+Cells(7,12)-1'第1空,终止位置DoWhileij'第2空t=Cells(1,i)Cells(1,i)=Cells(1,j)'第3空Cells(1,j)=t'第4空i=i+1j=j-1'第5空LoopEndSubEsy06实验1:打开Excel工作簿E601.xls,编写一个程序,提取字符串中的数字符号。例如,程序运行后输入字符串abc123edf456gh,则输出“123456”。Subtq()s=InputBox(请输入一个字符串:)'输入一个字符串,放在变量s中n=Len(s)'第1空,求出s的长度,放在变量n中Fori=1Tona=Mid(s,i,1)'第2空,求字符串aIfa=oAnda=9Then'第3空,如果a的值是0到9之间的数字符号,b=b&a'第4空,则把它拼接到结果字符串变量b中EndIfNext
本文标题:Excel高级应用VBA实验题目解析
链接地址:https://www.777doc.com/doc-7259058 .html