楼主 罗刚君 |
提示:此题目是“VBA入门免费教学群”(群号:30729794)的课后作业 请未参与听课者绕道,谢谢配合。 第八课是“输入语句Inputbox”,所以题目皆与Inputbox相关。 ___________________不太华丽的分隔线_______________________ 1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! 2.批量创建工作表,工作表的数量等于一年的天数,工作表的名字等于“1日”、“2日”、“3日”...“300日”、“301日” 取哪一年的天数由Application.Inputbox方法决定,通过Application.Inputbox方法创建一个输入框,让用户在其中录入年度,例如2008。 默认值为今年,至于今年是几几年,请用VBA代码计算而来。 3.计算最大值的工作表函数是Worksheetfunction.max,请用VBA代码计算附件中任意科目的成绩最大值。科目成绩所在区域由用户在输入框中指定。 案例.rar 4.使用Application.Inputbox方法随意选择区域,利用Msgbox函数报告该区域的地址。 ___________________不太华丽的分隔线_______________________ 补充:“VBA入门免费教学群”(群号:30729794)每周三上课一次,有兴趣者皆可报名,永远免费。 请提交作业时注明在免费听课群的昵称。三次不交作业者,将踢出群,让出空间让更多的人进来听课,请大家配合。 |
2楼 tchsong |
1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! '答:inputbox函数:函数显示一个对话框,并且提供便于用户输入的文本说明。 '函数返回一个字符串,实际上并不完全是这样。 '无法控制输入框的大小。 '执行一次inputbox函数只能返回一个值,如果需要多次输入,需要多次调用 '(1)如果同时提供了Helpfile与Context参数,可以按F1键来查看与Context相应的帮助主题,Excel通常会在输入框中自动添加一个帮助(Help)按钮。 '(2)如果单击确定(OK)或按下ENTER键,则InputBox函数返回文本框中的内容;如果单击取消(Cancel),则此函数返回一个长度为零的字符串("")。 '(3)如果要输入多个参数并省略中间的某些参数,则必须在相应位置加入逗号分界符。 '(4)InputBox函数返回的是一个字符串,若需要得到数值,则需要使用Val函数将字符串转换为一个值。 'inputbox方法:显示一个接收用户输入的对话框,并返回此对话框中输入的信息。运用InputBox方法可以指定需要返回的数据类型,可通过在工作表中拖放指定工作表的单元格区域,并能自动执行输入有效性验证。 '函数与方法具体有一些细微的但是非常有用的区别 '细微的区别是left和top参数,他们与xpos和ypos参数等价。 '方法的最后一个参数-type '0 一个公式;1 一个数字; 2 文本(字符串);4 一个逻辑值,例如true,false '8 一个单元格引用; 16 一个错误值 ; 64 一个值得数组; ' '可以将这些可用的值相加后使用。 '如果用户单击“取消”方法将返回逻辑值false,对话框可以指定输入数据类型。 '(1)使用 InputBox 可以显示一个简单的对话框,以便输入宏所需要的的信息。此对话框有一个“确定”按钮和一个“取消”按钮。如果选取了“确定”按钮,则InputBox将返回对话框中输入的值。如果单击“取消”按钮,则 InputBox 的值为False。 '(2)如果Type为 0,InputBox将以文本格式返回输入的公式。例如,“=2*PI()/360”。如果公式中有引用,将以 A1-样式引用返回(用ConvertFormula方法转换引用样式)。 '(3)如果Type为 8,InputBox将返回一个Range对象。必须用 Set 语句将结果指定给一个Range对象,如下例所示。 'Set myRange = Application.InputBox(prompt:="Sample", Type:=8) '如果不使用Set语句,此变量将被设为这个区域的值,而不是Range这个对象本身。 '(4)如果使用 InputBox 方法要求用户输入公式,则必须使用FormulaLocal属性来将此公式指定给一个Range对象。 '(5)InputBox方法与InputBox函数的区别在于:InputBox方法可以对用户的输入自动执行输入有效性验证,也可用于Excel对象、误差值、和公式的输入。需要注意的是Application.InputBox调用的是InputBox方法,不带对象识别符的InputBox调用的是InputBox函数。 'inputbox方法的优势是:内置的出错处理。最后type可以指定输入数据类型。 ---------------------------------------------------------------------------------------------------------- 2答: Sub 批量建立工作表按年包含的天数() Dim m As Integer, i As Integer, a As Integer, b As Integer 10: m = Application.InputBox(prompt:="请录入年度,Enter a number,ex:2008", Title:="按年批量创建工作表,数量等于一年的天数", _ Default:=Year(Date), Left:=7, Top:=7, Type:=1) If m = False Then Exit Sub If m > 9999 Or m < 2011 Then MsgBox "输入错误请重新输入:范围在2011-9999年之间的年份" GoTo 10 Else i = CDate(m + 1 & "-1-1") - CDate(m & "-1-1") End If For b = 1 To i - Sheets.Count Sheets.Add after:=Sheets(Sheets.Count) Next For a = 1 To Sheets.Count Sheets(a).Name = a & "日" Next a End Sub ---------------------------------------- 3,4答: Sub 按照选区取地址随意求最大值() On Error Resume Next Dim m As Range, n As Range 10: Set m = Application.InputBox("请选择区域", Title:="选取区域", Type:=8) If m Is Nothing Then MsgBox "取消,将要退出程序" Exit Sub End If If m.Count < 2 Then MsgBox "请选择大于2个单元格的区域" GoTo 10 End If If Application.Intersect(m, Range("b2:f11")) Is Nothing Then MsgBox "在已用区域之外,请重新选择" GoTo 10 End If MsgBox WorksheetFunction.Max(m) MsgBox m.Address End Sub Desk作业op.zip |
3楼 kcxs |
Sub 作业1() MsgBox "Application.Inputbox方法相对于Inputbox函数的优势在于:" & Chr(10) & "提供了数据类型检测和直接产生区域引用的功能,大大方便了用户的使用。在工作中尽量使用Application.Inputbox方法替代Inputbox函数。", vbOKOnly End Sub Sub 作业2批量创建工作表() '批量建立新表,工作表的数量等于一年的天数,工作表的名字等于“1日”、“2日”、“3日”...“300日”、“301日” Dim i As Integer, years As Integer '声明变量 '弹出一个对话框,让用户指定年份,默认显示当前年 years = InputBox("请输入年份,程序将建立该年天数命名的工作表", "确定年份", Year(Date)) '批量生成工作表,其个数等于指定年份的天数减去当前已有工作表个数,即确保工作表数量等于该年天数 '删除多余工作表 If Sheets.Count >= 365 Then Application.DisplayAlerts = False For i = Worksheets.Count To 4 Step -1 Worksheets(i).Delete Next Application.DisplayAlerts = True End If If Sheets.Count >= 255 And Sheets.Count < 365 Then Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=DateSerial(years, 12, 31) - DateSerial(years - 1, 12, 31) - Sheets.Count End If If Sheets.Count < 255 Then Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=255 - Sheets.Count Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=DateSerial(years, 12, 31) - DateSerial(years - 1, 12, 31) - 255 End If '将所有工作表重命名,工作表名对应每日的日期 For i = 1 To Worksheets.Count Worksheets(i).Name = i & "日" '对每个工作表命名 Next i MsgBox "建立完毕!", 64 End Sub Sub 删除多余工作表() Application.DisplayAlerts = False For i = Worksheets.Count To 4 Step -1 Worksheets(i).Delete Next Application.DisplayAlerts = True End Sub Sub 报数() MsgBox ActiveWorkbook.Worksheets.Count End Sub Sub 作业3最大值计算() Dim rng As Range, address As String If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" Set rng = Application.InputBox("请选择待计算最大值的科目的区域,如$B$1:$F$11", "科目区域", address, , , , , 8) If rng Is Nothing Then Exit Sub '先计算各人(行)的最高分 For i = 1 To rng.Rows.Count '从1到总行数 '利用Offset取得汇总数据的放置位置, 即选区第一个单元格向右偏移选区的列数 '合计区域也用Offset逐行偏移来获取, Resize的作用是重置为1行, 否则会汇总其他行的数据 rng(1).Offset(i - 1, rng.Columns.Count) = WorksheetFunction.Max(rng.Offset(i - 1).Resize(1)) Next '再计算各科(列)的最高分值 For i = 1 To rng.Columns.Count + 1 '从1到总列数加1,因为需要对行的汇总数再进行汇总 rng(1).Offset(rng.Rows.Count, i - 1) = WorksheetFunction.Max(rng.Offset(, i - 1).Resize(, 1)) Next End Sub Sub 作业4利用Msgbox函数报告该区域的地址() Dim rng As Range Set rng = Application.InputBox("请选择需要返回地址的区域,如$B$1:$F$11", "利用Msgbox函数报告该区域的地址", address, , , , , 8) If rng Is Nothing Then Exit Sub MsgBox "您选择的区域是:" & Chr(10) & rng.address End Sub 第8课作业-客城小生.rar |
4楼 lzyamo3057 |
Application.Inputbox方法相对于Inputbox函数有哪此优势? 1.Application.Inputbox方法增加了能检验用户录入字符的数据类型,对不符合限定的数据这对需要限制输入数据类型,有很大的帮助。 2.Application.Inputbox方法比Inputbox函数增加了可以产生单元格的引用。这方便了用户选定心仪的单元格或单元格区域,个人感觉这个功能,这个功能很棒
作业.rar |
5楼 小志就是我了 |
请老师审阅。 吉林-悟.rar |
6楼 笑看江湖 |
这个是我的作业,后面两问,不满意,先交,回头再想想 20130320-feng16888.zip |
7楼 无言的人 |
1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! 答:采用这个语法的优势,在于可控制输入数据的必要类型,更佳易于数据的录入和使用规范,减少中间的数据类型的转换。 2新建工作表并注明日,缺憾不能一次行,新建需要的工作表数量啊,超过总数256就菜了啊,不修改,就这样上吧
|
8楼 manuel442 |
QQ昵称:智山仁水 1、强制用户录入数值;对任意选区进行行列合计;利用Application.Inputbox录入公式 2、
|
9楼 Erik_16888 |
上面笑看江湖也是我的,我的qq:364646658 名称为笑看江湖。这个是我重新注册的。作业重新上交 20130320-feng16888.zip |
10楼 一点点 |
8讲作业案例-糊啦啦.rar 老师辛苦了 1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! 答:Application.Inputbox方法和inputbox函数用**能基本相同,Application.Inputbox方法比inputbox函数多一个指定类型的参数,就因该参数Application.Inputbox方法比inputbox函数就强大很多,比如:输入公式、检测数据类型、可以判断逻辑值、错误值、可以直接生成区域的引用或数组。 |
11楼 扯蛋 |
1111111111111111111111111 案例.zip |
12楼 wendel |
无心手语(25421098) 1、两个inputbox名字一样,功能相近,都是返回操作员输入的内容。从开发出生时间上来看,肯定先有Inputbox,然后才有application.inputbox,虽然不是官方说法,其实可以认定application.intpubox是inputbox的升级版本,但两个Inputbox父对象不一样,一个是vba,一个是application。父对象不一样其实也决定了两个作为输入函数的差异性。应该说vba.inputbox血统继承了vb,vb尽管是一门大众化的语言,还是有其专业背景,而application.inputbox则不同,这是针对excel高级用户,更加贴近了用户,淡化了专业色彩,具备着很多的优势和便利:一个是输入内容,不再仅限于返回文本值(string),增加了一个参数type,能指定不同的数据类型,具备了数据类审核功能,开发人员不用添加语句判断去防错,即内置数据类型审核功能,特别是针对application(excel)的特殊对象——单元格引用,提供了type值为8的自助选择区域方式,更显省心,开发人员,特别是初级接触vba的用户,不用去考虑其实很简单但是看着比较复杂的——窗体类设计,能方便地满足初级对话框的操作需求。 2、
|
13楼 qing33670000 |
Q群名称:初学VBA 1、Application.Inputbox方法比Inputbox函数的优势在于Application.Inputbox方法多了最后一个参数(TYPE),对录入信息类型进行检查。 2、
|
14楼 闻启学 |
罗总 四维-佛山-蚊子 第一题 不好意思 我不知道怎样表达出来 文字水平有限 代码请指导下 案例-蚊子(完成).zip |
15楼 amylee |
作业提交 第8课作业.rar |
16楼 嗜金饕餮 |
嗜金饕餮 第八课作业.rar |
17楼 韩搏 |
第一题:Application.Inputbox方法相对于Inputbox函数有哪此优势? 答:Application.Inputbox方法相比于Inputbox函数提供了数据类型检测和直接产生区域引用的功能,强制用户录入数值,还可以录入公式 老师我是初学 后几个还在理解 答起来比较困难 争取能做出来 |
18楼 fengling5566 |
罗老师: 您好,附件是我的作业。txt文件是各问代码和第一问的回答,xlsm文件是第2问、第3、4问(放一块了)。非常感谢您的谆谆教导!~另外我水平有限,基本上就是照着您的例题代码照葫芦画瓢改过来的,请多指正! 再次致谢! 风铃(646298668)作业.rar |
19楼 元兴华 |
QQ名=兴华.zip QQ名=兴华.zip |
20楼 元兴华 |
=兴华(第八节课作业 QQ名=兴华.zip ) |
21楼 csppglass |
罗老师: 作业请查收!辛苦了,谢谢! 祝 工作顺利,身体健康! 江苏0基以上 江苏0基.rar |
22楼 冰淇林的冬天 |
VBA入门免费教学群”(群号:30729794) 贵州-冰激凌的冬天 inputbox课后作业.rar |
23楼 sharkzhou |
又有 |
24楼 一片叶子 |
@小鱼 第8课作业.rar |
25楼 ldc6213 |
回答问题 答题.rar |
26楼 zbkfbyb |
InputBox函数 当只需做出“是”、“否”、“确定”、“取消”等简单的回答时,MsgBox函数非常好用。 但是,如果需要其他类型的输入,例如数字和文本时,就需要使用InputBox函数。 InputBox函数显示一个对话框,并且提供便于用户输入的文本说明。InputBox函数的语法如下: InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context]) InputBox函数必须具有的参数是prompt。和MsgBox函数的prompt参数一样,prompt参数的值是将显示在对话框中的字符串。 可选参数title是显示在对话框标题栏中的字符串表达式。和在MsgBox函数中一样,如果没有给title参数设定数值,标题栏将显示“MicrosoftExcel”。 为了节省用户的时间,你也许希望给可选参数default设定数值。这个参数的值可设为一个字符串表达式,当用户没有输入任何数据时,其值将显示在文本框中作为默认响应。如果省略了这个参数,文本框将显示为空白。如果要求用户输入邮政编码,而且大部分顾客的邮政编码都相同,那么应当提供一个邮政编码作为默认输入。 xpos和ypos也是可选参数,这两个参数决定输入框在屏幕上的显示位置。 helpfile和context这两个可选参数只有在为应用程序创建了帮助文件时才有用。 InputBox函数的返回值是用户在对话框上的文本框中输入的信息。要练习使用InputBox函数,请完成如下步骤: 1)在当前模块中插入新的名为IBExercise的过程。 2)为新的过程输入如下代码: Dim iResult As Integer iResult=InputBox("Please enter your favorite number") MsgBox iResult ActiveCell.Value=iResult 这些代码提示用户输入一个数字,接着在一个消息框中显示这个数字,同时它也将这个数字显示在工作表上活动的单元格中。 3)将插入点指向该过程,按下F5键运行这个过程,显示出来的输入框如图所示。 4)输入一个数字并按回车键,显示出包含刚才输入数字的消息框。 5)单击“确定”按钮,退出消息框。 6)返回工作簿,应当在工作簿活动的单元格中看到输入的数字。 如果你查看在线帮助文档,就会知道InputBox函数返回一个字符串。实际上并不完全是这样。在VisualBasic更新的版本,包括实现VBA的版本中,从输入数据的特征上看,返回值的行为更像是Variant类型。这正是即使iResult变量被设定为Integer数据类型时,过程仍然能够正常工作的原因。关于InputBox函数,需要知道的另一点是,如果用户单击了“取消”按钮会返回什么样的数值。如果用户单击“取消”按钮,InputBox函数将返回一个零长度的字符串" "。最后,用户似乎总是想知道如何控制输入框的大小。实际上无法控制输入框的大小,这正是“所见即所得”的一个例子。 InputBox方法 Excel支持另一种获取用户输入的方式—InputBox方法。看上去InputBox方法和InputBox函数是一样的,实际上InputBox方法具有一些细微的但是非常有用的区别。首先需要了解的是InputBox方法的语法: Application.InputBox(prompt,[Title],[Default],[Left],[Top],[HelpFile],[HelpContextId],[Type]) InputBox方法的语法和InputBox函数相似。注意语句以Application开始。这个方法属于Excel,因而它也属于应用程序。 大部分参数看上去都是相同的。细微的区别是Left和Top参数,它们与xpos和ypos参数等价。 应当注意的是InputBox方法的最后一个参数—Type。 通过可选参数Type可以指定返回值的数据类型。表5-3列出了参数Type可以使用的数值。 表5-3 参数Type可以使用的数值 值 期望的返回值 0 一个公式 1 一个数字 2 文本(字符串) 4 一个逻辑值,例如true或False 8 一个单元格引用 16 一个错误值 64 一个值的数组 看过这张表后,你也许希望知道为什么数字之间有间隔,例如从4跳到8、从16跳到64,这是因为可以将这些可用的数值相加后使用。例如,如果你希望接收数字和文本,那么可将Type参数设置为1+2。如果没有设置Type参数的值,InputBox方法将返回文本。为了说明InputBox方法的优点,请完成如下步骤: 1)运行IBExercise过程。 2)在输入框中输入字母“a”作为响应,按下回车键,查看运行的结果。因为输入的是字母而不是数字,过程运行会出错,如图所示。 此主题相关图片如下: 3)单击“结束”按钮,退出消息框。 4)创建一个新的名为IBMethod的过程,这个新的过程将使用InputBox方法。 5)为新的过程输入如下代码: Dim iResult As Integer iResult=Application.InputBox_ ("Please enter your favorite number",,,,,,,1) MsgBox iResult ActiveCell.Value=iResult 在Application.InputBox语句中使用的逗号相当于一个占位符,用以取代没有输入数值的参数。Type是InputBox方法语法中最后一个参数。将Type参数设置为1,这意味着只接收数字。注意本过程中这一行代码与IBExercise中的代码行的唯一区别是Application.InputBox语句的使用。 6)将插入点指向过程IBMethod,按下F5键运行过程,显示出一个输入框。 7)输入字母“A”并按回车键,此时过程不会出错,而是显示一条解释所出问题的消息,如图所示。 此主题相关图片如下: 8)按回车键退出该消息框。 9)输入“7”并按回车键,显示一个消息框,其中有一个7。单击“确定”按钮退出消息框。 现在,可以看到InputBox方法的一个优点是内置的出错处理。InputBox方法和InputBox函数的另一个区别是,当用户单击“取消”按钮时的返回值。如果使用InputBox函数而用户选择了“取消”按钮,则返回一个零字节的字符串。如果使用InputBox方法,则返回False。 |
27楼 静思雨 |
1、 Application.InputBox相对于inputbox,有3个优点: 第一、可以指定要返回的数据类型; 第二、允许用户在工作表中拖曳,返回指定单元格区域; 第三、自动执行输入的有效性验证。 2、 Sub 增加表格() Dim YearNum As Integer, i As Integer On Error Resume Next YearNum = Application.InputBox(Prompt:="请输入年份数字", Type:=1) For i = 1 To DateSerial(YearNum + 1, 1, 1) - DateSerial(YearNum, 1, 1) Worksheets.Add after:=Worksheets(Worksheets.Count) ActiveSheet.Name = i & "日" Next End Sub 3、 Sub 求最大值() Dim Rng As Range On Error Resume Next Sheets("3月1日").Activate Set Rng = Application.InputBox(Prompt:="选择一个成绩区域.", Title:="选择科目", Default:=ActiveCell.Address, Type:=8) If Rng Is Nothing Then MsgBox "再来" Else MsgBox WorksheetFunction.Max(Rng) End If End Sub 4、 Sub 显示单元格地址() Dim Rng As Range On Error Resume Next Sheets("3月1日").Activate Set Rng = Application.InputBox(Prompt:="选择一个单元格区域.", Title:="显示地址", Default:=ActiveCell.Address, Type:=8) If Not Rng Is Nothing Then MsgBox Rng.Address End If End Sub QQ号:519318159 昵称:【浙】--小影 |
28楼 kouhogliang |
q群昵称:炼 1.Application.InputBox方法除了检校功能外,自由选择区域的功能相当人性化 2. Sub 新建工作表() '批量建立新表,个数等于本年天数,同时对日期命名,并建立目录 Dim i As Integer, years As Integer, b As Integer '声明变量 '弹出一个对话框,让用户指定年度,默认显示当前年 years = InputBox("请输入年度,程序将建立该年每日日期命名的工作表", "确定年度", Year(Date)) If 0 = years Mod 100 Then If 0 = yeras Mod 400 Then days = 366 Else days = 365 End If Else If 0 = years Mod 4 Then days = 366 End If days = 365 End If a = Sheets.Count b = days - a '批量生成工作表,其个数等于指定年度的天数减去当前已有工作表个数,即确保工作表数量等于该年天数 Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=b '33 'days - Sheets.Count '将所有工作表重命名,工作表名对应每日的日期 For i = 1 To Worksheets.Count Worksheets(i).Name = i & "日" '对每个工作表命名 Next i MsgBox "建立完毕!", 64 End Sub 工资表超过256个,老是提示"方法'add'作用于对象'sheets'时失败" 3. |
29楼 clgwdm |
请老师指点。谢谢。 流星雨(75494907)_第八课作业.zip |
30楼 Canaanlix |
作业交付 第8课 作业_输入语句InputBox.rar |
31楼 老固 |
VBA第8课作业 学员:老固 提示:此题目是“VBA入门免费教学群”(群号:30729794)的课后作业 请未参与听课者绕道,谢谢配合。 第八课是“输入语句Inputbox”,所以题目皆与Inputbox相关。 ___________________不太华丽的分隔线_______________________ 1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! 答:A、Application.Inputbox方法具有检校功能,内置了防范措施。比如可以检验用户录入字符的数据类型。 B、Application.Inputbox方法自由选择区域的功能相当人性化。可以手动选择区域,也可以用输入的形式直接产生区域引用。 C、在单元格中录入公式时,Application.Inputbox方**对公式进行检查,如果不符合公式的基本语**阻止用户录入。 2.批量创建工作表,工作表的数量等于一年的天数,工作表的名字等于“1日”、“2日”、“3日”...“300日”、“301日” 取哪一年的天数由Application.Inputbox方法决定,通过Application.Inputbox方法创建一个输入框,让用户在其中录入年度,例如2008。 默认值为今年,至于今年是几几年,请用VBA代码计算而来。 Sub 新建工作表() Dim i As Integer Dim dates As Integer Dim A As Date Dim B As Date Dim C As Integer dates = Application.InputBox("请输入年份程序将创建该年份天数命名的工作表", "确定年份", Year(Date), 50, 50, , , 1) MsgBox dates A = dates - 0 - 0 B = dates - 12 - 31 C = DateDiff("d", B, A) MsgBox C Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=DateDiff("d", A, B) - Sheets.Count For i = 1 To Worksheets.Count Worksheets(i).Name = &i&"日" Next i End Sub 3.计算最大值的工作表函数是Worksheetfunction.max,请用VBA代码计算附件中任意科目的成绩最大值。科目成绩所在区域由用户在输入框中指定。 Sub 计算任意科目的成绩最大值() Dim rng As Range, address As String '声明一个对象变量 '如果当前选择的对象是单元格则将单元格地址赋予变量,否则将空文本赋予变量 If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng Set rng = Application.InputBox("请选择待需计算的成绩最大值区域", "计算成绩最大值区域", address, , , , , 8) If rng Is Nothing Then Exit Sub WorksheetFunction.Max (Range("rng" & Range("B65536").End(xlUp).Row)) End Sub 4.使用Application.Inputbox方法随意选择区域,利用Msgbox函数报告该区域的地址。 Sub 用msgbox函数报告选择区域() Dim rng As Range, address As String '声明一个对象变量 Dim A As String '如果当前选择的对象是单元格则将单元格地址赋予变量,否则将空文本赋予变量 If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng Set rng = Application.InputBox("请选择待需计算的成绩最大值区域", "计算成绩最大值区域", address, , , , , 8) If rng Is Nothing Then Exit Sub Set A = rng MsgBox A End Sub ___________________不太华丽的分隔线_______________________ 罗老师,熬了一整晚也没能把这几道题圆满完成。请罗老师乘热打铁,在周三就这期作业讲一讲。 |
32楼 ff8shi |
石头作业: 第一题: Application.Inputbox方法相对于Inputbox函数的优势: 1.Application.Inputbox没有字符限制。 因Application.Inputbox的返回值可以是公式,数字,文本,逻辑值,单元格引用,错误值,数值数组。所以 通过指定返回的数据类型,能检验用户录入字符的数据类型,也能能产生单元格引用. 第二题:
|
33楼 玉丫头 |
听课群里也是这个ID 第1题: 1)输入的数据类型可以控制; 2)错误预防 第2题:
|
34楼 韩搏 |
第二题: Sub 新建年表() Dim i As Integer Dim years As Integer Dim j As Integer years = Application.InputBox("请输入年份,程序将建立该年每天的工作表", "确定年份", year(Date)) If years Mod 4 = 0 Then Sheets.Add after:=Sheets(Sheets.Count), Count:=255 - Sheets.Count For i = 1 To Sheets.Count Sheets(i).Name = i & "日" Next i Sheets.Add after:=Sheets(Sheets.Count), Count:=111 For j = 256 To 366 Sheets(j).Name = j & "日" Next j Else Sheets.Add after:=Sheets(Sheets.Count), Count:=255 - Sheets.Count For i = 1 To Sheets.Count Sheets(i).Name = i & "日" Next i Sheets.Add after:=Sheets(Sheets.Count), Count:=110 For j = 256 To 365 Sheets(j).Name = j & "日" Next j End If End Sub |
35楼 朱朱无双 |
第8课作业解答 1)Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面! 答:Application.Inputbox方法相对于Inputbox函数,两者在功能上基本一致,但Application.Inputbox方法它提供了数据类型检测和直接产生区域引用的功能,这方便了用户的使用。 例如:Application.Inputbox方法的最后一个参数设置为1时,它可以强制用户录入数值。设置为8时,可以返回单元格引用。设置为0可以利用Application.Inputbox方法录入公式,且如果录入的字符不符合公式的格式,那么将阻止程序的继续运行,可以达到保证公式的正确性。 2)2.批量创建工作表,工作表的数量等于一年的天数,工作表的名字等于“1日”、“2日”、“3日”...“300日”、“301日” 取哪一年的天数由Application.Inputbox方法决定,通过Application.Inputbox方法创建一个输入框,让用户在其中录入年度,例如2008。 默认值为今年,至于今年是几几年,请用VBA代码计算而来。 答: Sub CreateWorksheets() Dim myYear As Long Dim i As Integer myYear = Application.InputBox("请输入年份", "年份", Year(Date), , , , , 1) If IsRunNian(myYear) Then For i = 1 To 366 Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = i & "日" Next i Else For i = 1 To 365 Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = i & "日" Next i End If End Sub Public Function IsRunNian(theYear As Long) As Boolean If (theYear Mod 4 = 0 And theYear Mod 100 <> 0) Or (theYear Mod 400 = 0) Then IsRunNian = True Else IsRunNian = False End If End Function 3.计算最大值的工作表函数是Worksheetfunction.max,请用VBA代码计算附件中任意科目的成绩最大值。科目成绩所在区域由用户在输入框中指定。 答:Sub myMax() Dim rng As Range Dim iMax As Integer Dim i As Integer Set rng = Application.InputBox("请选择成绩科目", "科目", , , , , , 8) iMax = 0 For i = 1 To rng.Count If rng(i) > iMax Then iMax = rng(i) End If Next i MsgBox "该科目的成绩最大值是:" & iMax End Sub 4.使用Application.Inputbox方法随意选择区域,利用Msgbox函数报告该区域的地址。 答: Sub reportAddress() Dim rng As Range Set rng = Application.InputBox("请选择区域", "区域", , , , , , 8) MsgBox rng.address End Sub |
36楼 hunt |
hehex 第8课作业。 hehex-第8课作业.zip |
37楼 暗香盈袖 |
我的作业,不太会 作业-暗香盈袖.zip |
38楼 hjsky |
第八课作业.rar ,四川-幺幺的作业 实在是水平有限啊 |
39楼 天空的雨 |
案例-免费听课群-天空答.rar 修改了下: 案例-免费听课群-天空答.rar |
40楼 shen22zc |
作业 作业(群名片:江苏-财务-鳶).rar |
41楼 ynzsvt |
第八课作业.zip 晚了点,抱歉。 |
42楼 韩搏 |
第三题: Sub 输出最大分数() Dim rng As Range, address As String '声明一个对象变量 Dim column As Long '如果当前选择的对象是单元格则将单元格地址赋予变量,否则将空文本赋予变量 If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng Set rng = Application.InputBox("请选择科目所在区域", "选择区域", address, , , , , 8) If rng Is Nothing Then Exit Sub '获取所选区域第一列的列号 colunm = rng.column For i = 1 To rng.Columns.Count '从1到总列数循环 Dim str As String, msg As String '获取第colunm列第一行的内容 str = Cells(1, colunm).Value colunm = colunm + 1 '输出最大分数 msg = str & ":" & WorksheetFunction.Max(rng.Offset(, i - 1).Resize(, 1)) MsgBox msg Next End Sub |
43楼 南方问 |
VBA入门免费教学群,ID:Excel-新手。第八课没听,群里也没课件,第一题不会答,做了下面几题 案例.rar |
44楼 eric2345 |
VBA入门免费教学群成员 江苏-eric交第八课作业了 江苏-eric - 第8课 课后作业.rar |
45楼 NULL |
application.inputbox 的优点可以确定输入的格式。 第二题与第四题见附件 罗总作业.rar |
46楼 498429525 |
EXCEL 混混 498429525 lesson eight inputbox work.rar |
47楼 lene |
1、application.inputbox方法相对于Inputbox函数的优势有3点:1、可以校验数据类型2、自由选择区域,实现单元格的引用 作业.zip |
48楼 lene |
老师,群名是 lene ,已经是很努力的做了,作业中还有待完善的地方,在努力中 |
49楼 我心飞翔615 |
答案终于做出来了 【罗刚君VBA免费课作业题】之第八课作业案例答案(我心飞翔 25903592).rar |
50楼 gls08 |
随心所欲 1、Application.Inputbox方法相对于Inputbox函数有以下优势: (1)检验用户录入字符的数据类型 (2)能产生单元格引用,用户可以直接选择区域 (3)字符长度没有限制 (4)可以利用Application.Inputbox方法录入公式 2、 Sub 新建工作表() '批量建立新表,个数等于一年天数,同时对日期命名,并建立目录 Dim i As Integer, years As Integer, days As Integer '声明变量 '弹出一个对话框,让用户指定年份,默认显示当前年 years = InputBox("请输入年份,程序将建立该年每日日期命名的工作表", "确定年份", year(Date)) ' 判定平闰年天数 If year(Date) Mod 4 = 0 And year(Date) Mod 100 <> 0 Then days = 366 Else days = 365 '批量生成工作表,其个数等于指定年份的天数减去当前已有工作表个数,即确保工作表数量等于该年天数 Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=days - Sheets.Count '将所有工作表重命名,工作表名对应每日的日期 For i = 1 To Worksheets.Count Worksheets(i).Name = i & "日" '对每个工作表命名 Next i MsgBox "建立完毕!", 64 End Sub 3、 Sub 成绩最大() Dim rng As Range, address As String '声明一个对象变量 '如果当前选择的对象是单元格则将单元格地址赋予变量,否则将空文本赋予变量 If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng Set rng = Application.InputBox("请选择待挑选科目成绩最大值的区域", "科目成绩最大值区域", address, , , , , 8) If rng Is Nothing Then Exit Sub '对话框弹出最大值 MsgBox WorksheetFunction.Max(rng) End Sub 4、 Sub 弹出地址() Dim rng As Range, address As String '声明一个对象变量 '如果当前选择的对象是单元格则将单元格地址赋予变量,否则将空文本赋予变量 If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" '弹出一个对话框, 让用户选择区域, 默认显示变量address的值。然后将该用户选择区域赋予变量rng Set rng = Application.InputBox("请选择待区域", "区域", address, , , , , 8) If rng Is Nothing Then Exit Sub '对话框弹出地址 MsgBox rng.address End Sub |
51楼 转角爱 |
不坏 作业.rar |
52楼 转角爱 |
我终于能交作业了 太幸福了 |
53楼 loquat |
代码很粗糙,罗总斧正。 案例.rar 快乐的搬砖工 |
54楼 xrw010 |
1、Application.Inputbox方法相对于Inputbox函数的优势有优势 ①Inputbox的返回值总是文本,如果要求返回值不是文本尽量使用application.Inputbox。 ②Inputbox不能检验用户录入字符的数据类型;application.Inputbox可以进行检验并提示错误类型。 ③Inputbox不能最单元格进行引用,只能手工录入地址;而application.Inputbox可以,且录入的公式可以在隐藏状态的工作表中执行。 2、代码: Sub 新建工作表2() Dim I As Double, years As Double, j As Double, k As Double years = Application.InputBox("请输入年份,程序将建立该年每日日期命名的工作表", "确定年份", Year(Date), , , , , 1) j = DateValue(DateSerial(years + 1, 1, 1)) - DateValue(DateSerial(years, 1, 1)) - Sheets.Count For k = 1 To j Sheets(k).Select Sheets.Add Next For I = 1 To Worksheets.Count Worksheets(I).Name = I & "日" Next I MsgBox "建立完毕!", 64 End Sub 注:Worksheets.Add After:=Worksheets(Worksheets.Count), Count:= DateValue(DateSerial(years + 1, 1, 1)) - DateValue(DateSerial(years, 1, 1)) - Sheets.Count运行不了,count大于255就运行不了,是否正常? 3、代码如下: Sub 计算最大值() Dim i As Byte, j As Byte, rng As Range, address As String If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" Set rng = Application.InputBox("请选择待合计的区域", "合计区域", address, , , , , 8) If rng Is Nothing Then Exit Sub For i = 1 To rng.Count j = WorksheetFunction.Max(j, rng(i)) Next MsgBox j End Sub 4、代码: Sub 显示选择区域() Dim i As Byte, j As Byte, rng As Range, address As String If TypeName(Selection) = "Range" Then address = Selection.address Else address = "" Set rng = Application.InputBox("请选择待合计的区域", "合计区域", address, , , , , 8) MsgBox "你选择的区域为" & rng.address End Sub 罗老师请过目,我的qq号是396788158,昵称:/xs才懂 |
55楼 天使ぉ之翼 |
请老师检阅 天使ぉ之翼 作业.zip |
56楼 miantiao1 |
罗老师,题目和作业都在压缩包的表格里面,谢谢 群名:VBA入门免费教学群 群 号:30729794 案例8.rar |
57楼 凄美の残缺 |
搞定 好吧,没搞定,没保存好,没东西了 案例.rar |
58楼 黄金眼 |
VBA入门免费教学群QQ号:黄金眼(312155343) 补交第八课作业.zip |
59楼 Jerrylam |
为什么登陆不能下载啊 |
60楼 cxleaf |
独立完成,虽然没有准时完成,你看我都病着呢,也不容易 第8课作业(cxleaf).zip |
61楼 啈冨□專属 |
不会 看了后还是有很大的启发 谢谢 |
62楼 jnjnlxx |
山东-初学 最近太忙了,听课不系统,先把能搜到的答上,剩下的还得在补补课才行,请罗老师手下留情,不要把我踢出去啊 inputbox函数:函数显示一个对话框,并且提供便于用户输入的文本说明。 '函数返回一个字符串,实际上并不完全是这样。 '无法控制输入框的大小。 '执行一次inputbox函数只能返回一个值,如果需要多次输入,需要多次调用 '(1)如果同时提供了Helpfile与Context参数,可以按F1键来查看与Context相应的帮助主题,Excel通常会在输入框中自动添加一个帮助(Help)按钮。 '(2)如果单击确定(OK)或按下ENTER键,则InputBox函数返回文本框中的内容;如果单击取消(Cancel),则此函数返回一个长度为零的字符串("")。 '(3)如果要输入多个参数并省略中间的某些参数,则必须在相应位置加入逗号分界符。 '(4)InputBox函数返回的是一个字符串,若需要得到数值,则需要使用Val函数将字符串转换为一个值。 'inputbox方法:显示一个接收用户输入的对话框,并返回此对话框中输入的信息。运用InputBox方法可以指定需要返回的数据类型,可通过在工作表中拖放指定工作表的单元格区域,并能自动执行输入有效性验证。 '函数与方法具体有一些细微的但是非常有用的区别 '细微的区别是left和top参数,他们与xpos和ypos参数等价。 '方法的最后一个参数-type '0 一个公式;1 一个数字; 2 文本(字符串);4 一个逻辑值,例如true,false '8 一个单元格引用; 16 一个错误值 ; 64 一个值得数组; ' '可以将这些可用的值相加后使用。 '如果用户单击“取消”方法将返回逻辑值false,对话框可以指定输入数据类型。 '(1)使用 InputBox 可以显示一个简单的对话框,以便输入宏所需要的的信息。此对话框有一个“确定”按钮和一个“取消”按钮。如果选取了“确定”按钮,则InputBox将返回对话框中输入的值。如果单击“取消”按钮,则 InputBox 的值为False。 '(2)如果Type为 0,InputBox将以文本格式返回输入的公式。例如,“=2*PI()/360”。如果公式中有引用,将以 A1-样式引用返回(用ConvertFormula方法转换引用样式)。 '(3)如果Type为 8,InputBox将返回一个Range对象。必须用 Set 语句将结果指定给一个Range对象,如下例所示。 'Set myRange = Application.InputBox(prompt:="Sample", Type:=8) '如果不使用Set语句,此变量将被设为这个区域的值,而不是Range这个对象本身。 '(4)如果使用 InputBox 方法要求用户输入公式,则必须使用FormulaLocal属性来将此公式指定给一个Range对象。 '(5)InputBox方法与InputBox函数的区别在于:InputBox方法可以对用户的输入自动执行输入有效性验证,也可用于Excel对象、误差值、和公式的输入。需要注意的是Application.InputBox调用的是InputBox方法,不带对象识别符的InputBox调用的是InputBox函数。 'inputbox方法的优势是:内置的出错处理。最后type可以指定输入数据类型。 |
63楼 zjylsjwz |
QQ昵称:蓝雨 第八课作业(学员:蓝雨).xls.rar |