11月13/14日 零基础学Excel VBA 300集Office 2010微视频教程
10月18/19日 7天Excel脱白 高效办公必会的Office实战技巧
10月23/24日 财务会计玩转Excel 网易云课堂-Excel数据透视表应用大全
Excel数据处理与分析实战技巧第1季
查看: 839|回复: 63

零基础VBA 第十期 第五课时作业贴

[复制链接]
发表于 2017-5-12 22:06:30 | 显示全部楼层 |阅读模式
本帖最后由 芬子 于 2017-5-17 16:57 编辑

交作业的要求:

1、不需要附件,只需贴代码,说明你做的是哪道题
2、贴上的代码都需要缩进,并且关键语句要有注释
3、请在添加代码文字,那里添加代码,这样代码要楼层中显得赏心悦目。不知道怎样操作的小伙伴,可以参照看动画。


091325f6opqa15p1aqouyo.gif
回复

使用道具 举报

发表于 2017-5-12 22:08:02 | 显示全部楼层
本帖最后由 抬头苦干 于 2017-5-14 10:04 编辑

作业05:(2017-05-12
  1. Option Explicit

  2. '1.SelectCase电影分级
  3. Sub Ex1_MovieClassifications()
  4.     Dim Age#, Level$, WithAdults%
  5.    
  6.     Age = Val(InputBox("请输入年龄:", "输入", 13))
  7.     Select Case Age
  8.         Case Is <= 13
  9.             Level = "G"
  10.         Case 13 To 16
  11.             WithAdults = MsgBox("是否有家里大人陪同?", vbYesNo + vbQuestion, "进一步确认")
  12.             Level = IIf(WithAdults = vbYes, "PG-13", "PG")
  13.         Case 16 To 18
  14.             Level = "NC-17"
  15.         Case Else
  16.             Level = "R"
  17.     End Select
  18.     MsgBox "年龄为 " & WorksheetFunction.Ceiling(Age, 1) & " 岁,可以看 " & Level & " 级的电影。"
  19. End Sub
复制代码
  1. '2.小明考试奖惩
  2. Sub Ex2_BonusOrPunishment()
  3.     Dim score#, i%
  4.     score = Val(InputBox("请输入小明的成绩:"))
  5.     If score >= 90 Then
  6.         MsgBox "考得不错,小明!奖励 100 元!"
  7.     Else
  8.         MsgBox "太马虎了!罚抄 100 遍 “ 我再也不敢马虎了 ” 。"
  9.         For i = 1 To 100
  10.             Debug.Print "小明抄写第 " & i & " 遍:我再也不敢马虎了。"
  11.         Next i
  12.     End If
  13. End Sub
复制代码
  1. '3.高斯累加变种1
  2. Sub Ex3_GaussAccumulation1()
  3.     Dim i%, mySum%
  4.     For i = 7 To 100 Step 7
  5.         mySum = mySum + i
  6.     Next i
  7.     MsgBox "1-100以内所有 7 的倍数的累积和为 " & mySum
  8. End Sub
复制代码
  1. '4.高斯累加变种2
  2. Sub Ex4_GaussAccumulation2()
  3.     Dim odd&, even&, i&
  4.     odd = 1
  5.     For i = 2 To 100
  6.         If i Mod 2 Then
  7.             odd = odd - i
  8.         Else
  9.             even = even + i
  10.         End If
  11.     Next i
  12.     MsgBox "1 + 2 - 3 + 4 - 5 + 6 … + 100 = " & (odd + even)
  13. End Sub
复制代码
  1. '5.求成绩总分和平均分
  2. Sub Ex5_SumAndstAvg()
  3.     Dim stNum%, stSum#, stAvg#, i%
  4.    
  5.     stNum = Val(InputBox("输入班级人数:(不小于0的整数)"))
  6.     For i = 1 To stNum
  7.         stSum = stSum + Val(InputBox("请输入第 " & i & " 名学生的成绩:(0-100)"))
  8.     Next i
  9.     stAvg = Round(stSum / stNum, 2)
  10.     MsgBox "本班 " & stNum & " 名学生的总成绩为 " & stSum & " 分;" & vbCrLf & _
  11.            "平均分为 " & stAvg & " 分。"
  12. End Sub
复制代码
  1. '6.打擂台算法
  2. Sub Ex6_FindMaxNum()
  3.     Dim maxI%, maxV#, inputV$, i%
  4.     For i = 1 To 5
  5.         inputV = Val(InputBox("请输入第 " & i & " 个非负数:"))
  6.         If inputV < 0 Then inputV = 0
  7.         If i = 1 Then   '避免结果与输入的数都无关
  8.             maxV = inputV
  9.             maxI = i
  10.         ElseIf maxV < inputV Then
  11.             maxV = inputV
  12.             maxI = i
  13.         End If
  14.     Next i
  15.     MsgBox "输入的五个数中,最大值出现在第 " & maxI & " 次输入,其值为 " & maxV
  16. End Sub
复制代码


回复 支持 反对

使用道具 举报

发表于 2017-5-12 23:12:03 | 显示全部楼层
  1. 'Select Case 作业 : 胡说电影分级制度演示程序:提示输入年龄,
  2. '如果小等于 13 岁,提示可以看 G 级电影,如果大于13岁但是小等于16 岁,提问是否有家里大人陪同,
  3. '如果是,可以看PG-13 级, 否则可以看PG 级。如果大于16岁 但小等于18岁,可以看NC-17级 级的电影,
  4. '大于18岁可以看R 级电影。

  5. Sub select作业()
  6.     Dim 年龄 As Long
  7.     年龄 = InputBox("请输入年龄")
  8.     Select Case 年龄
  9.     Case Is <= 13
  10.         MsgBox "可以看G级电影"
  11.     Case Is <= 16
  12.         If MsgBox("是否有家里大人陪同?", vbYesNo) = vbYes Then
  13.             MsgBox "可以看PG-13级电影"
  14.         Else
  15.             MsgBox "可以看PG级电影"
  16.         End If
  17.     Case Is <= 18
  18.         MsgBox "可以看NC-17级电影"
  19.     Case Is > 18
  20.         MsgBox "可以看R级电影"
  21.     End Select
  22. End Sub


  23. '循环作业1:
  24. '输入小明的考试成绩,如果考试成绩大等于90分,则奖励100元。
  25. '否则,惩罚小明写一百遍 “我再也不敢马虎了”。在立即窗口输出"小明抄写第多少遍"(debug.print,语句的使用)

  26. '第一步:输入小明的考试成绩
  27. '第二步:判断小明的成绩是否>=90分
  28. '第三步:如果>=90 那么奖励小明100元
  29. '第三步: 否则,小明从第1遍 --第100遍 ,并在立即窗口输出

  30. Sub 循环作业1()
  31.     Dim i As Long, 成绩 As Long
  32.     i = 1
  33.     成绩 = InputBox("请输入小明考试成绩")
  34.     If 成绩 >= 90 Then
  35.         MsgBox "奖励小明100元"
  36.     Else
  37.         For i = 1 To 100
  38.             Debug.Print "小明抄写第" & i & "遍,我再也不敢马虎了。"
  39.         Next
  40.     End If
  41. End Sub



  42. '循环作业2 :高斯累加的最简单的变种
  43. '
  44. '请编程计算1…100 当中所有7的倍数的累计和

  45. Sub 循环作业2()
  46.     Dim sumV As Long, i As Long
  47.     For i = 7 To 100 Step 7
  48.         sumV = sumV + i
  49.     Next
  50.     MsgBox "1…100当中所有7的倍数的累计和是" & sumV
  51. End Sub


  52. '循环作业3:高斯累加的变种
  53. '编程计算1+2-3+4-5+6… 100 的结果

  54. Sub 循环作业3()
  55.     Dim i As Long, sumV As Long
  56.     sumV = 1
  57.     For i = 2 To 100
  58.         sumV = sumV + i * (-1) ^ i
  59.         Debug.Print sumV
  60.     Next
  61.     MsgBox sumV
  62. End Sub



  63. '循环作业4:
  64. ' 输入班级人数,然后依次输入学生成绩。最后输出该班级学生成绩的总分和平均分。
  65. '建议该班学生不超过5人
  66. '第一步:你输入一个班级人数 ---- 声明一个变量存班级人数 3
  67. '                                变量:学生成绩
  68. '                                总分 = 总分+学生成绩
  69. '第二步:构建循环,依次输入每一个学生的成绩,对总分进行累加
  70. '第三步:依据总分与班级人数求平均分

  71. Sub 循环作业4()
  72.     Dim 人数 As Long, 成绩 As Long, sum成绩 As Long, i As Long
  73.     人数 = InputBox("请输入班级人数")
  74.     For i = 1 To 人数
  75.     成绩 = InputBox("请输入第" & i & "个人的成绩")
  76.     sum成绩 = sum成绩 + 成绩
  77.     Next
  78.     MsgBox "该班学生成绩总分为" & sum成绩 & "分.平均分为" & sum成绩 / 人数 & "分"
  79. End Sub


  80. '*循环作业5:
  81. '不断要求用户输入一个数字(inputbox),如果用户输入字符串则该数字为0. 如果该用户输入到第5 遍,
  82. '程序会结束。Msgbox 输出用户输入过的最大数字和该数字是第几次输入的。(注意:不考虑负数)
  83. '朴素的算法:打擂台
  84. '定义一个变量maxV 最大值, Maxi 存输入最大值的那次的次数
  85. 'maxv =1

  86. Sub 循环作业5()
  87.     Dim i As Long, inputv As Long, numV As Long, Maxi As Long
  88.     For i = 1 To 5
  89.     inputv = Val(InputBox("请输入一个正数"))
  90.     If inputv < 0 Then inputv = 0
  91.         
  92.     If inputv > numV Then
  93.         numV = inputv
  94.         Maxi = i
  95.     End If
  96.     Next
  97.     MsgBox "最大的数字是" & numV & ",该数字是第" & Maxi & "次输入的."
  98. End Sub
复制代码


回复 支持 反对

使用道具 举报

发表于 2017-5-12 23:31:34 | 显示全部楼层
  1. Sub 分支作业1()
  2.     Dim age As Long
  3.     Dim yesno
  4.     age = Val(InputBox("请输入您的年龄"))
  5.     Select Case age
  6.     Case Is <= 13
  7.         MsgBox "您可以看G级电影"
  8.     Case 14 To 16
  9.         yesno = MsgBox("您是否有家里大人陪同?", vbYesNo)    'yes 有大人陪同,no无大人陪同
  10.         If yesno = vbYes Then
  11.             MsgBox "您可以看PG-13级电影"
  12.         Else
  13.             MsgBox "您可以看PG级电影"
  14.         End If
  15.     Case 17 To 18
  16.         MsgBox "您可以看NC-17级电影"
  17.     End Select
  18. End Sub
复制代码

点评

少了最后一个R级的电影  发表于 2017-5-17 14:51
回复 支持 反对

使用道具 举报

发表于 2017-5-12 23:32:26 | 显示全部楼层
  1. '循环作业1:
  2. '输入小明的考试成绩,如果考试成绩大等于90分,则奖励100元。
  3. '否则,惩罚小明写一百遍 “我再也不敢马虎了”。在立即窗口输出"小明抄写第多少遍"(debug.print,语句的使用)

  4. '第一步:输入小明的考试成绩
  5. '第二步:判断小明的成绩是否>=90分
  6. '第三步:如果>=90 那么奖励小明100元
  7. '第三步: 否则,小明从第1遍 --第100遍 ,并在立即窗口输出

  8. Sub 输出demo()

  9.     Dim i As Long, score As Long
  10.     score = Val(InputBox("请输入小明的考试成绩"))
  11.     If score >= 90 Then
  12.         MsgBox "奖励小明100元"
  13.     Else
  14.         For i = 1 To 100
  15.         Debug.Print "小明抄写第" & i & "遍,我再也不敢马虎了。"
  16.         Next
  17.     End If
  18. End Sub

  19. '循环作业2 :高斯累加的最简单的变种
  20. '
  21. '请编程计算1…100 当中所有7的倍数的累计和


  22. Sub 倍数7()

  23.     Dim i As Long, sum As Long
  24.     For i = 1 To 100
  25.         If i Mod 7 = 0 Then
  26.             sum = sum + i
  27.         End If
  28.     Next
  29.     MsgBox sum
  30. End Sub


  31. '循环作业3:高斯累加的变种
  32. '编程计算1+2-3+4-5+6… 100 的结果
  33. Sub 奇偶数()
  34.     Dim i As Long, sum As Long
  35.     sum = 1
  36.     For i = 2 To 100
  37.         If i Mod 2 = 0 Then
  38.             sum = sum + i
  39.         Else
  40.             sum = sum - i
  41.         End If
  42.     Next
  43.     MsgBox sum
  44. End Sub


  45. '循环作业4:
  46. ' 输入班级人数,然后依次输入学生成绩。最后输出该班级学生成绩的总分和平均分。
  47. '建议该班学生不超过5人
  48. '第一步:你输入一个班级人数 ---- 声明一个变量存班级人数 3
  49. '                                变量:学生成绩
  50. '                                总分 = 总分+学生成绩
  51. '第二步:构建循环,依次输入每一个学生的成绩,对总分进行累加
  52. '第三步:依据总分与班级人数求平均分

  53. Sub class()
  54.     Dim i As Long, people As Long, score As Long, sum As Long
  55.     people = Val(InputBox("请输入班级人数"))
  56.     For i = 1 To people
  57.         score = Val(InputBox("请输入一个学生的成绩"))
  58.         sum = sum + score
  59.     Next
  60.     MsgBox "该班级学生成绩的总分是" & sum & " ; " & "平均分是" & sum / people
  61. End Sub



  62. '*循环作业5:
  63. '不断要求用户输入一个数字(inputbox),如果用户输入字符串则该数字为0. 如果该用户输入到第5 遍,
  64. '程序会结束。Msgbox 输出用户输入过的最大数字和该数字是第几次输入的。(注意:不考虑负数)
  65. '朴素的算法:打擂台
  66. '定义一个变量maxV 最大值, Maxi 存输入最大值的那次的次数
  67. 'maxv =1
  68. Sub demo5()
  69.     Dim i As Long, inputV As Long, maxV As Long, maxi As Long
  70.     For i = 1 To 5
  71.         inputV = Val(InputBox("请输入一个正数"))
  72.         If inputV < 0 Then inputV = 0
  73.             If inputV > maxV Then
  74.                 maxV = inputV
  75.                 maxi = i
  76.             End If
  77.         Debug.Print inputV
  78.         Debug.Print i
  79.     Next
  80.     MsgBox "输入的最大数为" & maxV & "    " & "输入次数为" & maxi
  81. End Sub
复制代码

点评

倍数7 可以使用for i = 7 to 100 step 7,可以减少循环次数  发表于 2017-5-17 14:55
回复 支持 反对

使用道具 举报

发表于 2017-5-13 08:04:17 | 显示全部楼层
  1. Sub zuoye1()
  2. Dim age As Long
  3. Dim panduan

  4. age = InputBox("请输入年龄")
  5. Select Case age
  6. Case Is < 13
  7. MsgBox "你可以看G级电影了"
  8. Case 13 To 16
  9. panduan = MsgBox("小朋友,你家长来了吗?", vbYesNo)
  10. If panduan = vbYes Then
  11. MsgBox "你可以看PG-13级电影了"
  12. Else
  13. MsgBox "你可以看PG级电影"
  14. End If
  15. Case 16 To 18
  16. MsgBox "你可以看NC-17电影"
  17. Case 18 To 75
  18. MsgBox "你可以看R级电影了"
  19. Case Is > 75
  20. MsgBox "你可以去死了"
  21. End Select
  22. End Sub
  23. Sub zuoye2()
  24. Dim chengji As Long
  25. Dim i As Long
  26. chengji = InputBox("请输入考试成绩")

  27. If chengji >= 90 Then
  28. MsgBox "奖励小明100元"
  29. Else
  30. For i = 1 To 100
  31. Debug.Print "小明抄写第" & i & "遍,我再也不敢马虎了."
  32. Next
  33. End If
  34. End Sub
复制代码

点评

第一题应该是case <= 13  发表于 2017-5-17 16:54
代码缩进问题注意下  发表于 2017-5-17 14:57
回复 支持 反对

使用道具 举报

发表于 2017-5-13 10:22:15 | 显示全部楼层
  1. Sub zuoye3()
  2. Dim sumv As Long
  3. Dim i As Long

  4. For i = 7 To 100 Step 7


  5. sumv = sumv + i
  6. Next

  7. MsgBox sumv



  8. End Sub
复制代码
回复 支持 反对

使用道具 举报

发表于 2017-5-13 10:27:25 | 显示全部楼层
本帖最后由 行动的蜗牛 于 2017-5-13 14:01 编辑

第5课作业,代码上传一直返回禁止访问!本次作业存成文本文件压缩后上传。

第5课作业.rar

1.43 KB, 下载次数: 7

代码提交后老是出错,只能已附件形式上传了。

回复 支持 反对

使用道具 举报

发表于 2017-5-13 11:36:15 | 显示全部楼层
本帖最后由 charmvon 于 2017-5-13 11:58 编辑
  1. Sub 作业1()
  2.     Dim age As Integer, 有人陪同否 As String
  3.     age = InputBox("请输入你的年龄")
  4.     Select Case age
  5.     Case Is <= 13
  6.         MsgBox "你可以看G级电影"
  7.     Case 13 To 16
  8.         有人陪同否 = MsgBox("是否有家里大人陪同?", vbYesNo)
  9.         If 有人陪同否 = vbYes Then
  10.             MsgBox "可以看PG-13级"
  11.         Else
  12.             MsgBox "可以看PG级"
  13.         End If
  14.      Case 16 To 18
  15.         MsgBox "你可以看NC-17级电影"
  16.      Case Is > 18
  17.         MsgBox "你可以看R级电影"
  18.      End Select
  19. End Sub
复制代码
  1. Sub 循环作业1()
  2.     Dim score As Integer, i As Long
  3.     score = InputBox("请输入你的考试成绩")
  4.     If score >= 90 Then
  5.         MsgBox "干得好,奖励100元"
  6.     Else
  7.         For i = 1 To 100
  8.         Debug.Print "小明抄写第" & i & "遍,我再也不敢马虎了。"
  9.         Next
  10.     End If
  11. End Sub
复制代码
  1. Sub 循环作业2()
  2.     Dim sum7 As Long, i As Long
  3.     For i = 1 To 100
  4.     If i Mod 7 = 0 Then
  5.     sum7 = sum7 + i
  6.     End If
  7.     Next
  8.         MsgBox sum7
  9. End Sub
复制代码
  1. Sub 循环作业3()
  2.     Dim i As Long, sum1 As Long, sum2 As Long
  3.     For i = 2 To 100
  4.     If i Mod 2 = 0 Then
  5.     sum2 = sum2 + i
  6.     ElseIf i Mod 2 = 1 Then
  7.     sum1 = sum1 - i
  8.     End If
  9.     Next
  10.         MsgBox sum1 + sum2 + 1
  11. End Sub
复制代码
  1. Sub 循环作业4()
  2.     Dim i As Long, score As Long, total As Long, aver As double
  3.     i = InputBox("请输入班级人数")
  4.     For i = 1 To i
  5.     score = InputBox("请输入学生成绩")
  6.     total = total + score
  7.     Next
  8.         MsgBox total
  9.     aver = total / (i - 1)
  10.         MsgBox aver
  11. End S<span style="line-height: 1.5;">ub</span>
复制代码
  1. Sub demo5()
  2.     Dim i As Long, inputV As Long, maxV As Long, maxI As Long
  3.     For i = 1 To 5
  4.         inputV = Val(InputBox("请输入一个正数"))
  5.         If inputV < 0 Then inputV = 0
  6.             Debug.Print inputV
  7.         If maxV < inputV Then
  8.             maxV = inputV
  9.             maxI = i
  10.         End If
  11.     Next
  12.             MsgBox "这些数字中,最大数是" & maxV
  13.             MsgBox "它是第" & maxI & "次输入的。"
  14. End Sub
复制代码

点评

缩进问题要注意下, 循环7的倍数可以用 for i = 7 to 100 step 7会减少循环次数 循环4 最后贴代码的时候乱码了  发表于 2017-5-17 15:08
回复 支持 反对

使用道具 举报

发表于 2017-5-13 11:54:06 | 显示全部楼层
  1. <div class="blockcode"><blockquote>Sub Select Case 作业()
  2. Dim 年龄 As Integer, 合格否 As String
  3. 年龄 = InputBox("请输入年龄")
  4. Select Case 年龄
  5.     Case 0 To 13
  6.     MsgBox ("可以看G电影")
  7.     Case 14 To 16
  8.         合格否 = MsgBox("是否有大人陪同", vbYesNo)
  9.         If 合格否 = vbYes Then
  10.         MsgBox ("可以看PG-13 级电影")
  11.         Else
  12.         MsgBox ("可以看PG 级电影")
  13.         End If
  14.     Case 17 To 18
  15.     MsgBox ("可以看NC-17级 级的电影")
  16.     Case Else
  17.     MsgBox ("可以看R 级电影")
  18. End Select
  19. End Sub
复制代码
Sub 循环作业1()
    Dim i As Long, 成绩 As Integer
    成绩 = InputBox("请输入考试成绩")
        If 成绩 >= 90 Then
        MsgBox ("奖励小明100元")
        Else
            For i = 1 To 100
            Debug.Print "小明抄写第" & i & "遍,我再也不敢马虎了。"
            Next
        End If
End Sub
  1. Sub 循环作业2()
  2. Dim i As Long, sumV As Long
  3.     For i = 1 To 100 Step 7
  4.         sumV = sumV + i
  5.     Next
  6.     MsgBox sumV
  7. End Sub
复制代码
  1. Sub 循环作业3()
  2. Dim a As Long, suma As Long, b As Long, sumb As Long, sumV As Long
  3.     For a = 2 To 100 Step 2
  4.         suma = suma + a
  5.     Next
  6.     For b = -3 To -100 Step -2
  7.         sumb = sumb + b
  8.     Next
  9.     sumV = suma + sumb
  10.     MsgBox sumV
  11. End Sub
复制代码
  1. Sub 循环作业4()
  2. Dim 班级人数 As Integer, 学生成绩 As Double, 平均分 As Double, 总分 As Long
  3. 班级人数 = InputBox("请输入班级人数")
  4.     For 学生成绩 = 1 To 班级人数
  5.         Cells(学生成绩, 1) = InputBox("请输入学生成绩")
  6.           总分 = 总分 + Cells(学生成绩, 1)
  7.     Next
  8.     平均分 = 总分 / 班级人数
  9.     MsgBox "总分是:" & 总分
  10.     MsgBox "平均分是:" & 平均分
  11. End Sub



复制代码

点评

代码缩进要注意下 循环7的倍数 应该是for 0 to 100 step 7,或者for 7 to 100 step 7,你从1开始 step7第二次i就变成8了 循环3可以看看别人怎么做的,你的答案不对  发表于 2017-5-17 15:15
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表