ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的测验 > Excel VBA > 罗刚君VBA免费课作业题】之第16课作业

罗刚君VBA免费课作业题】之第16课作业

作者:绿色风 分类: 时间:2022-08-18 浏览:119
楼主
罗刚君
提示:此题目是“VBA入门免费教学群”(群号:30729794)的课后作业
请未参与听课者绕道,谢谢配合。
_____________________________________________________


题目一:以下代码有可能出错,有可能正常执行。
Sub test()
MsgBox ActiveSheet.UsedRange.Value
End Sub
请问什么情况下不会出错,什么情况下会出错,错误原因是什么?

题目二:请看图,根据A3、B4、B7和C8四个单元格的值确定一个区域的地址。实现动画中同等结果即可。(即要结前面课程的知识Msgbox和工作表事件等)

 

题目三:请看图,Sheet5工作表的A3单元格指定工作表名称,B3单元格指定区域地址,C3单元格指定索引号
要求通过代码引用这3个已知条件所限定的单元格的值,显示在状态栏中。状态栏的表示法是:
Application.StatusBar = "赋值"
A3、B3和C3每修改一次,状态栏的值变化一次

 

题目3.rar


题目四:如何表示工作表中的最后一个单元格?

题目五:详述Selection与事件的参数Target的相同点与不同点

题目六:请用代码引用活动工作表的已用区域的第二列
_____________________________________________________
补充:“VBA入门免费教学群”(群号:30729794)每周三上课一次,有兴趣者皆可报名,永远免费。
请提交作业时注明在免费听课群的昵称。三次不交作业者,将踢出群,让出空间让更多的人进来听课,请大家配合。

2楼
静思雨
老师辛苦啦


1。
当active.usedrange.count<=1的时候,代码正确
当active.usedrange.count>1的时候,出错,因为Msgbox不能同时显示多个值

2.
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     With Target
  3.         Err.Clear
  4.         If .Address = "$A$3" Or .Address = "$B$4" Or .Address = "$B$7" Or .Address = "$C$8" Then
  5.                 On Error Resume Next
  6.                 MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address
  7.         End If
  8.         If Err > 0 Then
  9.             MsgBox "起始行列数应为正数值!"
  10.             Target.Select
  11.         End If
  12.      End With
  13. End Sub
3.
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Address(0, 0) <> "A3" And Target.Address(0, 0) <> "B3" And Target.Address(0, 0) <> "C3" Then Exit Sub
  3.     Application.StatusBar = Sheets([a3].Value).Range([b3].Value).Cells([c3].Value).Value
  4. End Sub
4.
  1. Sub AA()
  2.   MsgBox Cells(Cells.Rows.Count, Cells.Columns.Count).Address
  3. End Sub
5.
相同点:都是发生改变单元格
不同点:selection是当前已经选择的单元格
target是在事件中返回的当前选择单元格区域

6.
ActiveSheet.UsedRange.columns(2)
3楼
zhoucs00
第一题:
当UsedRange只有一个单元格时,不会出错,当为多个单元格时会出错。因为,ActiveSheet.UsedRange.Value区域的Value是一个数组,包括多个对象,VBA中无法直接将其显示出来。

第二题:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count > 1 Then Exit Sub
   If Target.Address = Range("A3").Address Or Target.Address = Range("B4").Address Or Target.Address = Range("B7").Address Or Target.Address = Range("C8").Address Then
      MsgBox Range(Cells(Range("A3"), Range("B4")), Cells(Range("B7"), Range("C8"))).Address
   End If
End Sub

第三题:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Count > 1 Then Exit Sub
   If Target.Address = Range("A3").Address Or Target.Address = Range("B3").Address Or Target.Address = Range("C3").Address Then
      Application.StatusBar = Sheets(Range("A3").Value).Range(Range("B3").Value).Cells(Range("C3").Value)
   End If
End Sub

第四题:
选区的最后一个单元格:
MsgBox Selection(Selection.Count).Address
工作表的最后一个单元格:
MsgBox Cells(Rows.Count, Columns.Count).Address

第五题:
在工作表的SelectionChange事件中,参数Target代表新选定的区域,在工作表的Change事件中参数Target代表更改的区域。Selections可以一次选择多个单元格,而Target一次只能选择一个单元格。

第六题:
MsgBox ActiveSheet.UsedRange.Columns(2)

在免费学习群中的昵称为:周(1053781532)
4楼
kcxs
客城小生的作业:

1、当UsedRange是单个单元格时不会出错,否则会出错。原因是已用区域UsedRange的Value是一个数组,包括多个对象,VBA中无法直接将其显示在屏幕上。如果利用Msgbox来显示这个属性值将得到一个运行错误。正确的方式是逐个引用区域中单个值。通过索引号作参数来实现。

2、
Sub test()
MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address, 64, "您指定的区域地址是:"
End Sub

3、
Sheets("sheet5").Activate '激活sheet5为活动(当前)工作表
Dim a As String '设定工作表名称变量
a = [a3] '给工作表名称变量赋值
Application.StatusBar = Sheets(a).Range([b3])([c3]) '通过代码引用单元格a3\b3\c3这3个已知条件所限定的单元格的值,显示在状态栏中
End Sub

4、MsgBox Cells(Rows.Count, Columns.Count).Address

5、Selection可以引用已选择的区域和所有单元格,通常简称为选区。选区可以是一个单元格,也可以包含多个单元格甚至多个区域,但事件的参数Target是新被选定的区域。如果选区仅仅一个单元格或区域,那么选区与Target新被选定的区域完全相同,它们代表相同的对象。

6、MsgBox ActiveSheet.UsedRange.Columns(2).Address
5楼
ynzsvt
浙江上海-依汎 交作业
第16课练习.zip
6楼
kiss被注册
答题(慢慢)
题目1(解):不出错.当Activesheet没有使用过的单元格,或者UsedRange为一个单元格(不是为匹域)
              出错.当UsedRange为一多个单元格时
              出错原因.MsgBox不能读出区域内容

题目2(解):If Target.Row = 3 And Target.Column = 1 Then
                  MsgBox Range(Cells(Range("A3").Value, Range("B4").Value), Cells(Range("B7").Value, Range("C8").Value)).Address
               ElseIf Target.Row = 7 And Target.Column = 2 Then
                  MsgBox Range(Cells(Range("A3").Value, Range("B4").Value), Cells(Range("B7").Value, Range("C8").Value)).Address
               ElseIf Target.Row = 8 And Target.Column = 3 Then
                  MsgBox Range(Cells(Range("A3").Value, Range("B4").Value), Cells(Range("B7").Value, Range("C8").Value)).Address
               ElseIf Target.Row = 4 And Target.Column = 2 Then
                  MsgBox Range(Cells(Range("A3").Value, Range("B4").Value), Cells(Range("B7").Value, Range("C8").Value)).Address
               End If

题目4(解):MsgBox Cells(Rows.Count, Columns.Count).Address

题目6(解):ActiveWindow.ActiveSheet.UsedRange.Columns(2).Select
7楼
爱情和面包
1, UsedRange 为多个单元格时会出错,因为他的值是个数组
2,MsgBox Range(Cells(Range("a3"), Range("b4")), Cells(Range("b7"), Range("c8"))).Address
4, Msgbox Selection(Selection.count).Address  '当前选取最后一个单元格
   MsgBox Cells(Rows.Count, Columns.Count).Address '整个工作表的最后一个单元格
   MsgBox UsedRange(UsedRange.Count).Address '已用区域的最后一个单元格
5,Application.StatusBar = Sheet2.Range(Range("B3").Value, Range("B3").Value).Cells(Range("C3")).Value '工作表不会引用
6,MsgBox ActiveSheet.UsedRange.Rows(2).Address
8楼
独孤求财
已更正。
独孤求财题目3作业.rar
9楼
qing33670000
题目一:当ActiveSheet.UsedRange是一个单元格时是正确的,当ActiveSheet.UsedRange多于一个单元格是出错。

题目二:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address
  3. End Sub
题目三:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.StatusBar = Sheets([a3].Value).Range([b3].Value).Cells([c3].Value).Value
  3. End Sub
题目四:
  1. MsgBox Cells(Cells.Rows.Count, Cells.Columns.Count).Address
题目六:
  1. Application.Index(ActiveSheet.UsedRange, , 2)
10楼
杭州小菜02
题目一:
MsgBox ActiveSheet.UsedRange.Value  为单个单元格时不会出错,为区域时则会出错,因为区域的VALUE是一个数组,msgbox函数无法将其直接显示在屏幕上
题目二:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox ActiveSheet.UsedRange.Address
End Sub
题目三:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
    For i = 1 To Sheets.Count
        If Sheets(i).Name = Sheets(5).Range("a3").Value Then
        Application.StatusBar = Sheets(i).Range(Sheets(5).Range("b3").Value).Cells(Sheets(5).Range("c3").Value)
        End If
    Next
End Sub
题目四:如何表示工作表中的最后一个单元格?
MsgBox Cells(Cells.Rows.Count, Cells.Columns.Count).Address
题目五:Selection与事件的参数Target的相同点是都是选区范围,不同点是前者是描述选定的范围,而target可以是多种事件的参数,比如在change事件中是代表更改的区域,可以是多个单元格。
题目六:请用代码引用活动工作表的已用区域的第二列
MsgBox ActiveSheet.UsedRange.Columns(2).Column
11楼
wendel
无心手语

1、如果用VBA语言来说,当usedrange.count=1的时候,代码正确;
当uusedrange.count>1的时候,出错,因为Msgbox不能同时显示多个值。

2、Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        Err.Clear
        If .Address = "$A$3" Or .Address = "$B$4" Or .Address = "$B$7" Or .Address = "$C$8" Then
                On Error Resume Next
                MsgBox Range(Cells([A3], [B4]), Cells([B7], [C8])).Address
        End If
        If Err > 0 Then
            MsgBox "起始行列数应为正数值!"
            .Select
        End If
     End With
End Sub

3、Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If .Address = "$A$3" Or .Address = "$B$3" Or .Address = "$C$3" Then
                Application.StatusBar = Sheets(CStr([a3])).Range([b3]).Cells([c3])
        End If
     End With
End Sub4、
Cells(rows.count,columns.count)

5、相同点:selection和target都是单元格区域。不同点:selection中存在一个特殊的单元格叫activecell,可以用.activate方法进行切换,而target的区域中,并无此特性。还有一个不同点是当target区域中的值发生变化,会自动触发一个预设的程序代码;而selection,除非主动运行宏,才会运行一段代码,否则的话,selection发生变化,并不会自动触发什么。

6、ActiveSheet.UsedRange.Columns(2)
12楼
llh505
第一题:当已用区域中不止一个单元格有数据时,则会出错,因为msgbox只能显示一个单元格的值,当已用区域是单元格区域时,则区域内数据以数组存放,不能通过msgbox显示,一定要让它显示时,则出错。
第二题:
第三题:application.statusbar=selection.text
第四题:cells(rows.count,columns.count)
第五题:selection称为选定的区域,可以包括多个单元格甚至是多个区域,在seletionchange事件中,target代表变化的selection,只包括一个变化的区域。
第六题:activesheet.usedrange.columns(2)
13楼
manuel442
QQ昵称:智山仁水
1、当已使用的单元格超过一个时,就会出错,出错的原因是多个已使用的单元格会返回一个数组,MSGBOX无法处理。
2、Private Sub Worksheet_Change(ByVal Target As Range)
If Target = [a3] Or Target = [b4] Or Target = [b7] Or Target = [c8] Then
MsgBox Range(Cells([a3].Value, [b4].Value), Cells([b7].Value, [c8].Value)).Address(1, 1)
End If
End Sub
3、Private Sub Worksheet_Change(ByVal Target As Range)
If Target = [a3] Or Target = [b3] Or Target = [c3] Then
Application.StatusBar = Sheets([a3].Value).Range([b3].Value).Item([c3].Value).Value
End If
End Sub
4、cells(activeSheet.Rows.Count,activeSheet.columns.Count)
5、
相同点:都是指当前的选定对象。
6、
ActiveSheet.UsedRange.Columns(2)
14楼
一点点
2.3题有点把握,其它……

Sub lianxi2()
    MsgBox Range(Cells(Range("a3"), Range("b4")), Cells(Range("b7"), Range("c8"))).Address
End Sub
Sub lianxi3()
    Dim ista
    Dim ish
    ish = Range("a3")
    ista = Sheets(ish).Range(Range("b3"))(Range("c3"))
    Debug.Print ista
    Application.StatusBar = ista
End Sub
15楼
wh_china2010
题目一:以下代码有可能出错,有可能正常执行。
Sub test()
MsgBox ActiveSheet.UsedRange.Value
End Sub
请问什么情况下不会出错,什么情况下会出错,错误原因是什么?
答:当已用区域为单个单元格时该代码不会出错。
当已用区域为多个单元格时代码运行错误,因为如果已用单元格为多个单元格时,ActiveSheet.UsedRange.Value是一个数组,包括多个对象,VBA中无法直接将其显示在屏幕上,所有在这种情况下用msgbox显示这个属性值的时候就会出现运行错误。
16楼
一片叶子
  1. @小鱼
  2. 1.答:在当前工作表为空或只有一个单元格内有数据的情况下不会出错,当前工作表有大于2个单元格有数据的情况下会出错,这里的MSGBOX要逐个引用单个单元格的值。
  3. 2.
  4. Sub test1()
  5.   Dim x, y, x1, y1
  6.     x = Range("a3").Value
  7.     y = Range("b4").Value
  8.     x1 = Range("c6").Value
  9.     y1 = Range("d7").Value
  10.   MsgBox Sheet1.Range(Cells(x, y), Cells(x1, y1)).Address
  11. End Sub
  12. 3.没明白
  13. 4.
  14. Sub test3()
  15.     MsgBox ActiveCell.SpecialCells(xlLastCell).Address
  16. End Sub
  17. 5.
  18. 答: Selection是表示引用已选区域的所有单元格。在工作表的SelectionChange的事件中,表示新选定的区域。在工作表的Change的Target表是更改的区域。
  19. 6.
  20. Sub test4()
  21.     MsgBox ActiveSheet.UsedRange.Columns(2).Address
  22. End Sub
17楼
天空的雨
作业-免费听课群-天空答.rar
18楼
冰淇林的冬天
冰激凌的冬天
16课作业.rar
19楼
498429525
excel 混混
题目一:以下代码有可能出错,有可能正常执行。
Sub test()
MsgBox ActiveSheet.UsedRange.Value
End Sub
请问什么情况下不会出错,什么情况下会出错,错误原因是什么?
当工作表只有一个单元格或者没有一个被使用不会出错,其它情况会出错。原因在于USEDRANGE引用的是单个单元格VALUE属性才能正常提取,否则VALUE为数组形式,只能单个提取,如MsgBox ActiveSheet.UsedRange.Cells(2).Value.当工作表无单元格使用时,UsedRange是代表A1单元格。
二、
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Offset(-1, 0) <> "" And Target.Count = 1 Then '将触发条件限制在项目下面
     MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address, Title:="你指定的区域地址是:" '显示条件所产生的区域地址
End If
End Sub
三、
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim StatusBar_Value
  If Target.Offset(-1, 0) <> "" Then '限制触发条件在项目下发
     StatusBar_Value = Worksheets([a3].Text).Range([b3].Text)([c3]) '状态栏要显示值的值
     Application.StatusBar = StatusBar_Value '状态栏显示值  
  End If
End Sub
题目四:如何表示工作表中的最后一个单元格?
  Cells(Rows.Count, Columns.Count).Address
题目五:详述Selection与事件的参数Target的相同点与不同点
相同点,都代表当前选择的区域,包涵当前激活的单元格
不同点,target的限制更具体,比如change事件只有单元格内容被改变才算。
题目六:请用代码引用活动工作表的已用区域的第二列
Excel.ActiveSheet.UsedRange.Item(2).EntireColumn.Select
20楼
无言的人
无言的人
  1. '题目一:以下代码有可能出错,有可能正常执行。
  2. 'Sub test()
  3. 'MsgBox ActiveSheet.UsedRange.Value
  4. 'End Sub
  5. '请问什么情况下不会出错,什么情况下会出错,错误原因是什么?
  6. '当所用区域只为一个单元格不会出错,而多于一个单元格时就出错,因此时返回的为单元格区域,而非数值
  7. '题目二:请看图,根据A3、B4、B7和C8四个单元格的值确定一个区域的地址。实现动画中同等结果即可。(即要结前面课程的知识Msgbox和工作表事件等)
  8. 'Private Sub Worksheet_Change(ByVal Target As Range)
  9. '    If Target.Address(0, 0) = "A3" Or Target.Address(0, 0) = "B4" _
  10. '        Or Target.Address(0, 0) = "B7" Or Target.Address(0, 0) = "C8" Then
  11. '        MsgBox Range(Cells(Range("a3"), Range("b4")), Cells(Range("b7"), Range("c8"))).Address
  12. '    End If
  13. 'End Sub
  14. 'Private Sub Worksheet_Change(ByVal Target As Range)
  15. '    With Target
  16. '        If .Row = 3 And .Column = 3 And .Count = 1 Then
  17. '            .Offset(0, -1) = Range(Cells(1, 1), Range(Sheets(.Offset(0, -2).Value). _
  18. '                UsedRange.Address)(.Value)).Address(0, 0)
  19. '            Application.StatusBar = .Value
  20. '        End If
  21. '    End With
  22. 'End Sub
  23. '
  24. 'Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  25. '    With Target
  26. '        If (.Row = 2 Or .Row = 3) And .Column < 4 And .Count = 1 Then
  27. '            Application.StatusBar = .Value
  28. '        End If
  29. '    End With
  30. 'End Sub
  31. '题目四:如何表示工作表中的最后一个单元格?
  32. 'Cells(Cells.Rows.Count, Cells.Columns.Count).Address
  33. '题目五:详述Selection与事件的参数Target的相同点与不同点
  34. 'Selcetion于Target 参数在工作表事件中时都是指为单元格区域都可以为一个单元格个或多个单元格区域 _
  35. Target 可以实时根据限定区域的不同事件,相应不同的运算
  36. '题目六:请用代码引用活动工作表的已用区域的第二列
  37. 'Sub UsedCol2()
  38. '    Dim rng As Range
  39. '    Set rng = ActiveSheet.UsedRange
  40. '    MsgBox rng.Columns(2).Address
  41. 'End Sub
21楼
lb425319789
题目三:
application.satusbar= Worksheets(sheet5!$a$3).range("range("b3").value").cells(range("c3").value)

题目四:如何表示工作表中的最后一个单元格?
MsgBox ActiveSheet.Range(Range.count).address

题目六:请用代码引用活动工作表的已用区域的第二列
ActiveSheet.UsedRange.columns(2)
因近期工作较忙,所以作业发的很晚,请老师谅解。
22楼
健康快乐123
c05水上漂123
第一题:当只有一个单元格时正确,多于一个单元格时就出现错误,因为usedrange是区域,区域的value是数组,vba无法将其显示在屏幕上。
第二题:Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address
End Sub
第三题:Private Sub Worksheet_Change(ByVal Target As Range)
    Application.StatusBar = Sheets([a3].Value).Range([b3].Value).Cells([c3].Value).Value
End Sub
第四题:cells(rows.count,columns.count)
第五题:Selection与事件的参数Target的相同点是都是选区范围,不同点是前者是描述选定的范围,而target可以是多种事件的参数,比如在change事件中是代表更改的区域,可以是多个单元格
第六题:MsgBox ActiveSheet.UsedRange.Columns(2).Column
23楼
mmice
题目一:以下代码有可能出错,有可能正常执行。
Sub test()
MsgBox ActiveSheet.UsedRange.Value
End Sub
请问什么情况下不会出错,什么情况下会出错,错误原因是什么?
:是单个单元格就不出错。如果是一个Range区域的话,出错,区域返回的是数组.

题目二:请看图,根据A3、B4、B7和C8四个单元格的值确定一个区域的地址。实现动画中同等结果即可。(即要结前面课程的知识Msgbox和工作表事件等)
Sub test()
MsgBox Range(Cells([a3], [b4]), Cells([b7], [c8])).Address, 64, "您指定的区域地址是:"
End Sub

题目三:请看图,Sheet5工作表的A3单元格指定工作表名称,B3单元格指定区域地址,C3单元格指定索引号
要求通过代码引用这3个已知条件所限定的单元格的值,显示在状态栏中。状态栏的表示法是:
Application.StatusBar = "赋值"
A3、B3和C3每修改一次,状态栏的值变化一次
问题三.gif
题目3.rar (9.24 KB, 下载次数: 43)
----------------------
题目四:如何表示工作表中的最后一个单元格?
MsgBox Cells.Find("*", Cells(1, 1), xlValues, xlWhole, xlByRows, xlPrevious).address(0.0) 区域最后一个
---------------------
题目五:详述Selection与事件的参数Target的相同点与不同点
答:这两个都是工作表事件
selection 是选区发生改变触发事件
Target是单元格发生改变时触发事件。
------------------------
题目六:请用代码引用活动工作表的已用区域的第二列
MsgBox ActiveSheet.UsedRange.Columns(2).Address

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap