您好,欢迎访问三七文档
1、编一个VBA程序,将Word当前文档中光标右边的大写字母转换为小写字母。Selection.MoveRightUnit:=wdCharacter,Count:=1,Extend:=wdExtendn=Asc(Selection.Text)Ifn=65Andn=90ThenSelection.TypeTextText:=Chr(n+32)ElseSelection.MoveRightUnit:=wdCharacter,Count:=1EndIf2、编一个VBA程序,在Word当前文档中按顺序输入26个英文字母。Fori=Asc(a)ToAsc(z)Selection.TypeTextText:=Chr(i)Next3、新建一个窗体,放置两个按钮和一个文字框控件。按钮的标题分别定义为“显示”和“清除”。单击“显示”按钮,在文字框中显示一行文字,单击“清除”按钮,清除文字框中的文字。①进入VBA编辑环境,打开“工程资源管理器”窗口,插入一个用户窗体。②在窗体上放置两个命令按钮和一个文字框。③右击命令按钮,选“属性”,设置Caption属性值为“显示”、“清除”。④双击“显示”命令按钮,输入如下代码:Me.TextBox1.SetFocusMe.TextBox1.Text=你好!欢迎学习VBA⑤双击“清除”命令按钮,编写代码如下:Me.TextBox1.Text=⑥双击用户窗体,为其Activate事件编写如下代码:Me.Caption=欢迎!4、假设某文件夹有20个属性相同、命名有规律(比如:pic01.gif、pic02.gif、……、pic20.gif)的图片文件,现在要依次放入PowerPoint幻灯片中,并调整为合适的格式。,①录制宏——输入标题、插入图形、调整格式。②加工录制的程序。设置路径、循环、使用变量。③运行程序。5、编写一个自定义函数,根据“工资及津贴”数额求出应缴纳党费的比例。Functiondf(x)SelectCasexCaseIs=400y=0.005CaseIs=800y=0.01CaseIs=1200y=0.015CaseIs=1500y=0.02CaseElsey=0.03EndSelectdf=yEndFunction6、用递归方法编写一个函数,求n的阶乘。Functionfact(n)Ifn=1Thenfact=1Elsefact=n*fact(n-1)EndIfEndFunction7、要想在Excel工作簿的任意一个单元格中输入数字“1”后,自动替换为符号“√”,建立Excel工作簿,进入VB编辑环境,对ThisWorkbook的SheetChange事件编写如下程序:PrivateSubWorkbook_SheetChange(ByValShAsObject,ByValTargetAsRange)IfTarget.Value=1ThenTarget.Value=√EndSub8、在Word中,要想用快捷键执行宏的方式快速将某一字符变为上角标录制新宏,设置快捷键,进行宏录制。选中字符,在“字体”窗口的“效果”栏中选中“上标”,停止录制宏。光标定在字符左边,按快捷键,即可转换为上角标。9、假设Excel当前工作表的A列是应参加会议人员名单,要求当每个与会人员报道时,在其姓名右边的单元格(B列)单击鼠标,自动填入当前日期和时间。建立Excel工作簿,进入VBA编辑环境,对WorkSheet的SelectionChange事件编写如:PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)col_s=Target.ColumnIfcol_s=BThenTarget.Value=Format(Now,yyyy-mm-ddhh:mm:ss)EndIfEndSub10、假设在Excel工作表中已经建立一个“XX高校教师信息表”。进入VBA编辑环境,在当前工程中插入一个模块,建立如下自定义函数:Functionage(idAsString)id=Trim(id)IfLen(id)=18Thenage=Year(Date)-Val(Mid(id,7,4))Elseage=Year(Date)-Val(19+Mid(id,7,2))EndIf在“年龄”列第一个单元格输入计算公式“=age(X)”,其中X是对应的身份证号单元格地址,并将公式填充到该列的其他单元格。11、编写程序,将Excel任意选定的两个单元格的内容互换SubChangV()v=ActiveCell.ValueForEachaInSelectionIfa.AddressActiveCell.AddressThenActiveCell.Value=a.Valuea.Value=vEndIfNextEndSub12、编写程序,在打开Excel时提示密码输入,如果错误则使用Application.Quit退出Excel。Subauto_Open()IfApplication.InputBox(请输入密码:)=123ThenExitSubElseApplication.QuitEndIfEndSub13、编写一段程序,求某门课程的平均分。要求用InputBox函数输入学生的人数和每个人的分数,用MsgBox语句输出平均分。Subpjf()rs=InputBox(输入学生的人数:)zf=0Fork=1Torsf=InputBox(输入考试成绩&k)zf=zf+fNextMsgBox(rs&位学生的平均分是:&zf/rs)EndSub14、设计一个判断三角形是否为直角三角形的子程序,它带有三个整型参数a、b和c分别表示三角形的三条边。Subcag(aAsInteger,bAsInteger,cAsInteger)Ifa^2+b^2=c^2Ora^2+c^2=b^2Orb^2+c^2=a^2ThenMsgBox是直角三角形ElseMsgbox不是直角三角形EndIfEndSub15、要想在Excel工作簿打开时建立一个名为“功能”的工具栏,在工具栏上添加一个按钮(按钮的capition任意,要执行的过程名任意),并且让工具栏可见。请写出工作簿Open事件的子程序。PrivateSubWorkbook_Open()Settbar=Application.CommandBars.Add(Name:=功能)Setbutt=tbar.Controls.Add(Type:=msoControlButton)Withbutt.Caption=取字模.Style=msoButtonCaption.OnAction=qzmEndWithtbar.Visible=TrueEndSub16、编写一个子程序,使用工作表函数求出“Sheet1”工作表A1:D10区域中的最小值。Subaa()DimmyRAsRangeSetmyR=Worksheets(Sheet1).Range(A1:D10)b=Application.WorksheetFunction.Min(myR)MsgBoxbEndSub17、编写一个子程序,将Excel当前工作表“A1:H8”区域的每行填涂一种不同颜色。Subkk()Fori=1To8Forj=Asc(A)ToAsc(H)c=Chr(j)&iRange(c).Interior.ColorIndex=iNextjNextiEndSub18、假设Excel当前工作表是某个班级学生成绩单(50人),第一列是姓名,第二、三、四列是三科成绩,试编一段VBA程序,通过输入框输入姓名后,查询并显示该学生的三科成绩和总成绩。xm=InputBox(请输入姓名:)ForI=1To50IfRange(A&I)=xmThencj1=Range(B&I)cj2=Range(C&I)cj3=Range(D&I)zcj=cj1+cj2+cj3MsgBox该生成绩分别为:&cj1&cj2&cj3&总成绩为:&zcjEndIfNext19、编写一段程序,在Excel工作簿中添加一个叫“选择模板”的工具栏,在工具栏上添加两个按纽叫“开始”和“退出”并分别调用KS、TC两个子程序。Settbar=Application.CommandBars.Add(Name:=选择模板)Setbutt1=tbar.Controls.AddWithbutt1.Caption=开始.OnAction=ksEndWithSetbutt2=tbar.Controls.AddWithbutt2.Caption=退出.OnAction=tcEndWithtbar.Visible=True20、编写一个求斐波那契数列第n项值的递归函数。该数列为:1123581321……。Functionfib(n)Ifn=1Orn=2Thenfib=1Elsefib=fib(n-1)+fib(n-2)EndIfEndFunction21、编写一个子程序,在Excel当前工作表的F5到J28填入1到5之间的随机整数。Submnsj()Fori=5To28Forj=6To10Cells(i,j)=Int(Rnd*5)+1NextNextEndSub22、编写一个子程序,当工作簿中工作表被切换时,对工具栏中按钮的可用性进行控制。要求当前工作表为“总分”或“信息”时,使工具栏按钮“butt1”不可用,否则可用。PrivateSubWorkbook_SheetActivate(ByValShAsObject)IfSh.Name=总分OrSh.Name=信息ThenButt1.Enabled=FalseElseButt1.Enabled=TrueEndIfEndSub23、在工作簿打开时,首先显示封面窗体UserForm1,然后建立一个工具栏命名为“竞赛评分”,在工具栏上添加一个命令按钮“汇总”,为按钮指定17号图符,并指定要执行的过程为“hz”。PrivateSubWorkbook_Open()UserForm1.ShowSettbar=Application.CommandBars.Add(Name:=竞赛评分)Setbutt=tbar.Controls.Add(Type:=msoControlButton)Withbutt.Caption=汇总.FaceId=17.Style=msoButtonIconAndCaption.OnAction=hzEndWithEndSub24、编写一个子程序,将当前Word文档选中的文本所有单词“ABC”替换为“VBA”。Subcz()WithSelection.Find.Text=ABC.Replacement.Text=VBA.ExecuteReplace:=wdReplaceAllEndWithEndSub25、编写一个子程序,求Range(“A2:A20”)区域中数据的平均值,填入Cells(2,3)中。要求四舍五入,保留小数点后两位。Sub平均值()zf=0Fori=2To20zf=zf+Cells(i,1)NextiCells(2,3).Value=Int(zf/19*100+0.5)/100EndSub26、编写一个子程序,求Range(“A2:A20”)区域中数据的最大值和最小值(假设数据的范围在0到100之间),并用消息框的形式显示出来。Subdxz()Setmyr=Range(a2:a20)a=Application.WorksheetFunction.Min(myr)b=Application.WorksheetFunction.Max(myr)MsgBox最大值为:&b&Chr(10)&最小值为:&aEndSub27、已知工作表中第1列从第1行开始到第40行有40个考试成绩数据,试编写一个子程序求出最高分并用消息框显示出来。Subzg()zgf=Range(A1)Fori=1To40IfRange(A&i)zgfThenzgf=Range(A&i)EndIfNextMsgBox最高分是:&z
本文标题:vba编程题库
链接地址:https://www.777doc.com/doc-7224423 .html