楼主 罗刚君 |
提示:此题目是“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.
相同点:都是发生改变单元格 不同点: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多于一个单元格是出错。 题目二:
|
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楼 一片叶子 |
|
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楼 无言的人 |
无言的人
|
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 |