Excel高级应用VBA实验题目解析.doc

上传人:飞****2 文档编号:52740597 上传时间:2022-10-23 格式:DOC 页数:14 大小:271KB
返回 下载 相关 举报
Excel高级应用VBA实验题目解析.doc_第1页
第1页 / 共14页
Excel高级应用VBA实验题目解析.doc_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《Excel高级应用VBA实验题目解析.doc》由会员分享,可在线阅读,更多相关《Excel高级应用VBA实验题目解析.doc(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Esy021、 选定sheet1工作表,合并A1:C1单元格,并输入“TEST”,背景颜色设置为浅黄色,字体颜色设置为红色,字体大小设置为10磅。Sub Macro1() Macro1 Macro 宏由 xu 录制,时间: 2013/3/26 Application.Left = 201.25 Application.Top = 61.75 Range(A1:C1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation

2、= 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge Range(A1:C1).SelectActiveCell.FormulaR1C1 = TESTRange(A1:C1).Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orie

3、ntation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = True End With With Selection.Font .Name = 宋体 .FontStyle = 常规 .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnde

4、rlineStyleNone .ColorIndex = 3 End With With Selection.Interior .ColorIndex = 6 .Pattern = xlSolid .PatternColorIndex = xlAutomatic End WithEnd Sub2在sheet1上创建“窗体”命令按钮并指定“宏”代码sy22,补充代码完成:从键盘输入一个整数n,输出如下图形。其中每个“*”在单元格中水平和垂直方向都要求居中。nSub sy22() Dim n As Integer, i As Integer, j As Integer 第1空 n = InputB

5、ox(输入行数) 从键盘输入数据并存放到变量n Sheets(Sheet1).Cells.ClearContents 清除sheet1工作表中单元格的内容 For i = 1 To n 循环打印,输出n行* For j = 1 To 2 * i - 1 每行输出奇数(2*i-1)个*,如:1,3,5个 Cells(i, n - i + j).Value = * Next j Next i Cells(1, n).Activate 激活A列N行的单元格 ActiveCell.CurrentRegion.Select 选定单元格所在的当前区域 With Selection .Font.Size =

6、 16 字体大小 .Font.Bold = True 字体加粗 .HorizontalAlignment = xlCenter 水平方向居中 .VerticalAlignment = xlCenter 垂直方向居中 End WithEnd subEsy031.调用EXCEL的RAND和INT内部函数,在A列的110行输入序号110,在B列的110行填入01之间的随机数,在C列的110行填入两位正整数,最后在C列的11行求出该列的最大数(调用MAX函数)。请参照程序上下文补充完整的语句Sub sy31() Dim k As Integer Dim a As String, b As String

7、, c As String For k = 1 To 10 a = A & k b = B & k c = C & k Range(a).Value = k 在A列的1-10行输入序号1-10 Range(b).Value = Rnd() 在B列的1-10行填入0-1之间的随机数 Range(c).Value = 10 + Int(90 * Rnd() 在C列的1-10行填入两位正整数 Next k Set myr = Worksheets(Sheet1).Range(C1:C10) Range(c11) = WorksheetFunction.Max(myr) 在C列的11行求出该列的最大数

8、(调用MAX函数)End SubEsy04输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并用Msgbox函数输出结果。分析:用IF语句实现Sub pdzi() Dim strC As String 定义变量strC为字符型 strC = InputBox(请输入字符) 第1空,利用InputBox函数输入字符放到strC中 If UCase(strC) = A And UCase(strC) = 0 And strC = 90 第2空 ActiveCell = 优 Case Is = 80 ActiveCell = 良 Case Is = 70 ActiveCell = 中 Cas

9、e Is = 60 ActiveCell = 及格 Case Else 第3空 ActiveCell = 不及格 End SelectEnd Sub4:打开Excel工作簿EC404.xls,在 A2,B2和C2单元格输入a, b, c 的值,单击最大值按钮,在D2显示这三个数的最大值。解题思路:假设三个数中的第一个数是最大值,用这个假定的最大值分别跟剩下的两个数比较,如果假定的最大值小于其它两个数,则最大值为较大的那个数。Sub max()Dim a As Double, b As Double, c As Double, max As Double a = Val(Cells(2, 1)

10、b = Val(Cells(2, 2) c = Val(Cells(2, 3) max = a 第1空 If max b Then max = b 第2空 End If If max = 0 第1空 sum = sum + data 第2空 k = k + 1 第3空 data = InputBox(请输入数据:)LoopMsgBox 一共输入了 & k & 个数。 _& vbCrLf & 其和为 & sum & 其平均值为: & sum / kEnd Sub实验3:编写程序计算SUM=1+1*2+1*2*3+1*2*3*100的和。解题思路:该题用DoLoop结构实现累积与累加,目标是求10

11、0项的累加,而每一项是一个累积式。Sub multi()Dim sum As Double Dim i As Integer Dim t As Double i = 1: t = 1: sum = 0 Do While i = 100 第1空 t = t * i 第2空 sum = sum + t 第3空 i = i + 1 第4空 Loop MsgBox (1+1*2+1*2*3+.+1*2*3*.*100= & sum)End Sub实验4:打开Excel工作簿E504.xls,编写程序,将当前工作表中第1行从指定位置m开始的n个数按相反顺序重新排列。例如,原数列为:1,2,3,4,5,6

12、,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空,终止位置 Do While i = o And a = Cells(1, s) Then Exit For 第 4 空,退出本层循环 Cells(1, s + 1) = Cells(1, s) 第 2 空,移动数据 Next s Cells(

13、1, s + 1) = a 插入数据 r = r + 1 第 3 空 ,修改目标数据区长度 Next 第 5 空End Sub实验3:在“D:Esy06”文件夹下打开文件EC603.xls,“求任意区域数值总和”按钮指定到名称为“sumSelection”的宏,补充宏代码,使之完成如下功能:计算工作表中任意选定区域的数据总和,并用信息提示对话框将结果输出,完成后按原文件名保存在原位置Sub sumSelection() For Each x In Selection 第1空,”For #1# In Selection“ s = s + x 第2空 Next msgbox 该区域的总和为: &

14、s 第3空,”msgbox 该区域的总和为: & #3# “End Sub实验4:在“D:Esy06”文件夹下打开文件EC604.xls,“从分班”按钮指定到名称为“Student”的宏,补充宏代码,使之完成如下功能:按顺序(成绩从高到低)对学生进行分班,每个班25名学生,每个班保存在一个新的工作表中。完成后按原文件名保存在原位置Sub Student()n = 0While Not (IsEmpty(Cells(n + 4, 1) n = n + 1 第 1 空Wendm = Application.WorksheetFunction.RoundUp(n / 25), 0)bs = 1Do

15、Sheets.Add ActiveSheet.Name = Str(bs) + 班 Cells(1, 1) = 英语 + Str(bs) + 班名单 Cells(2, 1) = 学号 Cells(2, 2) = 姓名 Cells(2, 3) = 成绩 For i = 1 To 25 For j = 1 To 3 第 2 空 Cells(i + 2, j) = Sheets(sheet1).Cells(i + 3 + (bs - 1) * 25, j) 第 3 空 Next Next bs = bs + 1 第 4 空, #4#Loop While bs = m 第 5 空, #5#End Su

16、bEsy07实验1:打开文件E701.xls,“一维数组求极值”按钮指定到名称为“一维数组求极值”的宏,补充宏代码,使之完成如下功能:输入10个数,将这10个数分别放在第1行的10个单元格中,求出这10个数的最大值和最小值放在相对应的单元格中。Sub 一维数组求极值() Dim E(1 To 10) As Single 第1空,定义一个名称为E,元素个数为10的一维数组 Dim max As Single, min As Single MsgBox 输入的10个数据如下: For i = 1 To 10 For语句的作用是先将输入的数据放到数组中,然后再将数组中的数放到对应单元格里 E(i)

17、= InputBox(请输入数据:) 第2空 Cells(1, i) = i 第3空 Next i max = E(1): min = E(1) For i = 2 To 10 If max E(i) Then min = E(i) 第5空 Next i Cells(2, 2) = max Cells(3, 2) = minEnd Sub实验2:打开文件E702.xls,“一维动态数组的使用”按钮指定到名称为“一维动态数组的使用”的宏,补充宏代码,将整型动态数组X声明为具有20个元素的数组,并给数组的所有元素赋值1。Sub 一维动态数组的使用() Dim X() As Integer 第6空

18、ReDim X(1 To 20) 第7空 For I = 1 To 20 X(I) = 1 第8空 Cells(I, 1) = X(I) Next IEnd Sub实验3:打开文件E703.xls,“统计英语成绩”按钮指定到名称为“统计英语成绩”的宏,补充宏代码,使之完成如下功能:首先输入该班人数,然后再分别输入该班学生的英语成绩并将英语成绩依次放在第1行,将大于平均值的数据以红色字体显示出来。Sub 统计英语成绩() Dim E() As Single Dim n As Integer Dim s As Single, aver As Single n = InputBox(请输入该班的人数

19、) ReDim E(n) 第9空 MsgBox 输入的 & n & 个数据如下: For i = 1 To n E(i) = InputBox(请输入英语成绩:) Cells(1, i) = E(i) s = s + E(i) 第10空 Next i aver = s / n 第11空 MsgBox 将大于平均值的数据以红色字体显示出来: For i = 1 To n If aver z And y + z x And x + z y Then 第5空,判断三条边能否组成三角形 area = (c - x) * (c - y) * (c - z) 1 / 2 第6空Else area = 这三

20、条边不能组成三角形!End IfEnd Function实验3:打开文件E803.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 终止位置 Do While i

21、= 0 And a = 1 DO语句实现字符串的反向,基本思路是从右边一个一个的截取字符放到给定变量中,变量中的字符串即为反向字符串 tempStr = tempStr & Mid(xStr, I, 1) 第15空 I = I - 1 Loop yStr = tempStr 第16空End SubSub 字符反向输出() Dim s1 As String, s2 As String s1 = InputBox(请输入字符串:) Call Invert(s1, s2) 第17空 MsgBox s2End SubEsy11期中考1、 请打开实验文件夹下的sy01.xls文件,完成如下操作:编程序,

22、打印九九乘法表如下。其中乘数和被乘数所在单元格字符格式为加粗,水平居中。Sub jiujiu()Dim i As Integer, j As IntegerFor i = 1 To 9 Cells(1, i + 1).Value = i 第1空,#(1)#.Value = i生成乘法表的第1行 Cells(i + 1, 1).Value = i 第2空,#(2)#.Value = i生成乘法表的第1列Next iRows(1).Font.Bold = True 第3空 #(3)#.Font.Bold = TrueRows(1).HorizontalAlignment = xlCenterCol

23、umns(1).Font.Bold = True 第4空 #(4)#.Font.Bold = TrueColumns(1).HorizontalAlignment = xlCenter 第5空 Columns(1).#(5)# = xlCenterFor i = 1 To 9For j = 1 To i 第6空 For j = #(6)# Cells(i + 1, j + 1).Value = i * j 第7空 #(7)# = i * jNext jNext iEnd Sub2、 请打开实验文件夹下的sy02.xls文件,完成题目要求的操作。Sub 男生分班()Sub 男生分班() Dim

24、k As Integer For Each sht In Worksheets 检查“男生”工作表是否存在,如果存在则删除 If sht.Name = 男生 Then Sheets(男生).Delete Sheets(男生).#(1)# Next Sheets.Add 建立男生工作表及表头信息 Range(a1:d1).Merge #(2)#.Merge ActiveSheet.Name = 男生 #(3)# = 男生 活动工作表的名字为“男生” Range(A1:D1).Value = 2000级男生信息表 Range(A1:D1).#(4)# = 2000级男生信息表 Range(A2).

25、FormulaR1C1 = Sheets(学生成绩).Range(A3).Value Range(B2).FormulaR1C1 = Sheets(学生成绩).Range(B3).Value Range(C2).FormulaR1C1 = Sheets(学生成绩).Range(C3).Value Range(D2).FormulaR1C1 = Sheets(学生成绩).Range(D3).Value -从“学生成绩表”中提取男生成绩并赋值给“男生”工作表- k = 3 k为男生表中每位学生记录的插入位置 For i = 4 To Sheets(学生成绩).Range(a65536).End(xlUp).Row 从第4行到工作表最后一行,读取学生成绩表所有数据 If Sheets(学生成绩).Cells(i, 3).Value

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁