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

【罗刚君VBA免费课作业题】之第八课作业 开贴了

作者:绿色风 分类: 时间:2022-08-18 浏览:138
楼主
罗刚君
提示:此题目是“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函数增加了可以产生单元格的引用。这方便了用户选定心仪的单元格或单元格区域,个人感觉这个功能,这个功能很棒
  1. Sub 建表()
  2.     Dim 数量 As Integer, i As Integer, 工作表名 As String, 年份
  3.     Application.DisplayAlerts = False
  4.     Application.ScreenUpdating = False
  5.     年份 = Application.InputBox("请输要生成工作表格的年,如:2008", "提示", Year(Now), , , , 1)
  6.     If 年份 = False Then
  7.         Exit Sub
  8.     End If
  9.     t = Timer

  10.     数量 = IIf((年份 Mod 4 = 0 And 年份 Mod 100 <> 0) Or 年份 Mod 400 = 0 And 年份 Mod 3200 <> 0, 366, 365)    '重新学了一次平闰年

  11.     For i = 1 To 数量
  12.         工作表名 = i & "日"
  13.         Worksheets.Add after:=Worksheets(Worksheets.Count)
  14.         ActiveSheet.Name = 工作表名
  15.     Next

  16.     Sheets("3月1日").Select
  17.     MsgBox Timer - t
  18.     Application.ScreenUpdating = True
  19.     Application.DisplayAlerts = True
  20. End Sub
  21. Sub 最大值()
  22.     Dim rng As Range
  23.     Set rng = Application.InputBox("请选择单元格区域", "选取提示", , , , , , 8)
  24.     If Application.Count(rng) >= 1 Then
  25.         MsgBox Application.Max(rng)
  26.     Else
  27.         MsgBox "你选的区域中,没有数字"
  28.     End If
  29. End Sub
  30. Sub 取地址()
  31.     Dim rng As Range
  32.     Application.DisplayAlerts = False
  33.     On Error Resume Next
  34.     Set rng = Application.InputBox("请选择单元格区域", "选取提示", , , , , , 8)
  35.     If rng Is Nothing Then
  36.         MsgBox "你怎么能不选呢?"
  37.         Exit Sub
  38.     Else
  39.         MsgBox rng.Address
  40.     End If
  41.     Application.DisplayAlerts = True
  42. End Sub

  43. Sub 建表1()
  44.     Dim 数量 As Integer, i As Integer, 年份
  45.     Application.DisplayAlerts = False
  46.     Application.ScreenUpdating = False

  47.     年份 = Application.InputBox("请输要生成工作表格的年,如:2008", "提示", Year(Now), , , , 1)
  48.     If 年份 = False Then
  49.         Exit Sub
  50.     End If
  51.     t = Timer
  52.     数量 = IIf((年份 Mod 4 = 0 And 年份 Mod 100 <> 0) Or 年份 Mod 400 = 0 And 年份 Mod 3200 <> 0, 366, 365)    '重新学了一次平闰年
  53.     Sheets.Add after:=Worksheets(Worksheets.Count), Count:=255
  54.     Sheets.Add after:=Worksheets(Worksheets.Count), Count:=数量 - 255
  55.     For i = 1 To 数量
  56.         Worksheets(i + 1).Name = i & "日"
  57.     Next
  58.     Sheets("3月1日").Select
  59.     MsgBox Timer - t
  60.     Application.ScreenUpdating = True
  61.     Application.DisplayAlerts = True
  62. End Sub
  63. Sub 建表2()
  64.     Dim 数量 As Integer, i As Integer, 工作表名 As String, 年份, arr
  65.     Application.DisplayAlerts = False
  66.     Application.ScreenUpdating = False

  67.     年份 = Application.InputBox("请输要生成工作表格的年,如:2008", "提示", Year(Now), , , , 1)
  68.     If 年份 = False Then
  69.         Exit Sub
  70.     End If
  71.     t = Timer
  72.     数量 = IIf((年份 Mod 4 = 0 And 年份 Mod 100 <> 0) Or 年份 Mod 400 = 0 And 年份 Mod 3200 <> 0, 366, 365)    '重新学了一次平闰年
  73.     Sheets.Add after:=Worksheets(Worksheets.Count), Count:=255
  74.     Sheets.Add after:=Worksheets(Worksheets.Count), Count:=数量 - 255
  75.     ReDim arr(1 To 数量)
  76.     For i = 1 To UBound(arr)
  77.         Worksheets(i + 1).Name = i - 1 & "日"
  78.     Next

  79.     Sheets("3月1日").Select
  80.     MsgBox Timer - t
  81.     Application.ScreenUpdating = True
  82.     Application.DisplayAlerts = True
  83. End Sub

作业.rar
5楼
小志就是我了
请老师审阅。
吉林-悟.rar
6楼
笑看江湖
这个是我的作业,后面两问,不满意,先交,回头再想想
20130320-feng16888.zip
7楼
无言的人
1.Application.Inputbox方法相对于Inputbox函数有哪此优势?尽量写全面!
答:采用这个语法的优势,在于可控制输入数据的必要类型,更佳易于数据的录入和使用规范,减少中间的数据类型的转换。
2新建工作表并注明日,缺憾不能一次行,新建需要的工作表数量啊,超过总数256就菜了啊,不修改,就这样上吧
  1. Sub AddSh()
  2. Dim Days As Integer, i As Integer
  3. Days = DateSerial(Year(Date) + 1, 1, 0) - DateSerial(Year(Date), 1, 0)
  4. Application.ScreenUpdating = False
  5. Sheets.Add After:=Worksheets(Sheets.Count), Count:=Days
  6. For i = 1 To Days
  7.     Sheets(i).Name = i & "日"
  8. Next i
  9. Application.ScreenUpdating = True
  10. End Sub
3、科目最大成绩代码
  1. Sub CJMax()
  2. Dim Ts As String, Rng As Range
  3. Dim r As Byte, MaxCj As Single
  4. Set Rng = Sheet1.Range("A1").CurrentRegion
  5. Ts = Application.InputBox("请输入需要查询的科目名称", Title:="查询科目", Type:=2)
  6. r = WorksheetFunction.Match(Ts, Rng.Resize(1, 4), 0) - 1
  7. MaxCj = WorksheetFunction.Max(Rng.Offset(1, r).Resize(Rng.Rows.Count - 1, 1))
  8. MsgBox MaxCj
  9. End Sub
4、使用Application.InputBox 获取所选区域并提示
  1. Sub SelRngAdd()
  2.     Dim Ts As Range, Rng As Range
  3.     Set Ts = Application.InputBox("请选择区域", Title:="选择区域", Default:=ActiveSheet.UsedRange.Address(0, 0), Type:=8)
  4.     MsgBox Ts.Address(0, 0)
  5. End Sub
8楼
manuel442
QQ昵称:智山仁水
1、强制用户录入数值;对任意选区进行行列合计;利用Application.Inputbox录入公式
2、
  1. Sub 生成工作表()
  2. Dim a, i
  3. a = Application.InputBox("请输入年份:", "提示!", Year(Date), , , , , 1)
  4. If a = False Then Exit Sub
  5.     If Day(VBA.DateSerial(a, 3, 0)) = 29 Then
  6.         If 366 - Sheets.Count > 255 Then
  7.         
  8.         Worksheets.Add after:=Sheets(Sheets.Count), Count:=255
  9.         Worksheets.Add after:=Sheets(Sheets.Count), Count:=366 - Sheets.Count
  10.         End If
  11.         For i = 1 To 366
  12.         Sheets(i).Name = i & "日"
  13.         Next
  14.     Else
  15.          If 365 - Sheets.Count > 255 Then
  16.          Worksheets.Add after:=Sheets(Sheets.Count), Count:=255
  17.          Worksheets.Add after:=Sheets(Sheets.Count), Count:=365 - Sheets.Count
  18.          End If
  19.          For i = 1 To 365
  20.          Sheets(i).Name = i & "日"
  21.          Next
  22.     End If
  23.    
  24. End Sub
3、
  1. Sub 科目最大值()
  2. Dim rng As Range, address As String, i As Byte
  3. On Error Resume Next
  4. If TypeName(Selection) = "Range" Then address = Selection.address Else address = ""
  5.     Set rng = Application.InputBox("请选择成绩区域", "提示", address, , , , , 8)
  6.     If rng Is Nothing Or Err > 0 Then Exit Sub
  7.     For i = 1 To rng.Columns.Count
  8.     rng(1).Offset(rng.Rows.Count, i - 1) = WorksheetFunction.Max(rng.Offset(, i - 1).Resize(, 1))
  9.     Next
  10. End Sub
4、
  1. Sub 选区地址()
  2. Dim rng As Range
  3. Set rng = Application.InputBox("请选择区域", , , , , , , 8)
  4. MsgBox "你选择的区域地址:" & rng.address
  5. End Sub
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、
  1. Sub addsheets()
  2.     Dim yr As Integer, i As Date, j As Integer
  3.     On Error Resume Next
  4.     yr = Application.InputBox(Prompt:="请输入年份数字", Type:=1)
  5.     Worksheets("1日").Select
  6.     If Err() = 0 Then End:
  7.     For i = VBA.DateSerial(yr, 1, 1) To VBA.DateSerial(yr, 12, 31)
  8.         j = j + 1
  9.         Worksheets.Add after:=Worksheets(Worksheets.Count)
  10.         ActiveSheet.Name = j & "日"
  11.     Next
  12. End Sub
3、
  1. Sub maxnum()
  2.     Dim UsrRange As Range
  3.     Prompt = "选择一个成绩区域,注意选择单科成绩."
  4.     Title = "选择科目"

  5. '   显示输入框
  6.     On Error Resume Next
  7.     Set UsrRange = Application.InputBox( _
  8.         Prompt:=Prompt, _
  9.         Title:=Title, _
  10.         Default:=ActiveCell.Address, _
  11.         Type:=8) 'Range selection
  12.         If UsrRange Is Nothing Then
  13.         MsgBox "请重新来过"
  14.     Else
  15.         MsgBox WorksheetFunction.Max(UsrRange)
  16.     End If
  17. End Sub
4、
  1. Sub displayAddrss()
  2.     Dim UsrRange As Range
  3.     Prompt = "选择一个区域,注意观察引用地址的变化."
  4.     Title = "选择单元格区域"

  5. '   显示输入框
  6.     On Error Resume Next
  7.     Set UsrRange = Application.InputBox( _
  8.         Prompt:=Prompt, _
  9.         Title:=Title, _
  10.         Default:=ActiveCell.Address, _
  11.         Type:=8) 'Range selection
  12.     If UsrRange Is Nothing Then
  13.         MsgBox "请重新来过"
  14.     Else
  15.         MsgBox UsrRange.Address
  16.     End If
  17. End Sub
13楼
qing33670000
Q群名称:初学VBA
1、Application.Inputbox方法比Inputbox函数的优势在于Application.Inputbox方法多了最后一个参数(TYPE),对录入信息类型进行检查。

2、
  1. Sub 批量创建一年天数的工作表()
  2.     Application.ScreenUpdating = False
  3.     Dim n As Integer, M As Integer, years As Integer
  4.     years = Application.InputBox("请录入年份", "年份", Year(Date), Type:=1)
  5.     M = DateSerial(Year(Date) + 1, 1, 0) - DateSerial(Year(Date), 1, 0)
  6.     Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=255 - Sheets.Count
  7.     Worksheets.Add After:=Worksheets(Worksheets.Count), Count:=M - 255
  8.     For n = 1 To M
  9.         Sheets(n).Name = n & "日"
  10.     Next
  11.     Application.ScreenUpdating = True
  12. End Sub
3、
  1. Sub 区域最大值()
  2.     MsgBox WorksheetFunction.Max(Application.InputBox("选择区域", "区域", Type:=8))
  3. End Sub
4、
  1. Sub 区域地址()
  2.     MsgBox Application.InputBox("选择区域", "区域", Type:=8).Address
  3. End Sub
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的返回值可以是公式,数字,文本,逻辑值,单元格引用,错误值,数值数组。所以
通过指定返回的数据类型,能检验用户录入字符的数据类型,也能能产生单元格引用.

第二题:
  1. Sub 建立新表()
  2.     Dim i As Integer, years As Integer, days As Integer    '声明变量
  3.   ' 弹出一个对话框 , 让用户指定年度, 默认显示当前年度
  4.     years = InputBox("请输入年度,程序将建立该年的天数命名工作表", "确定年度", Year(Date))
  5.    ' 批量生成工作表 , 其个数等于指定年度的天数减去当前已有工作表个数
  6.     If years Mod 4 = 0 Then
  7.         days = 366
  8.     Else
  9.         days = 365
  10.     End If
  11.     Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=days - Sheets.Count - 200
  12.     Worksheets.Add after:=Worksheets(Worksheets.Count), Count:=days - Sheets.Count
  13.    ' 将所有工作表重命名 , 工作表命名对应每天的天数
  14.     For i = 1 To Worksheets.Count
  15.         Worksheets(i).Name = i & "日"  '对每个工作表命名
  16.     Next i
  17.     MsgBox "建立完毕!"
  18. End Sub
第三题:
  1. Sub 成绩最大值()
  2.     rng = InputBox("请选择需要计算最大值的区域", "成绩统计")
  3.     K = WorksheetFunction.Max(Range(rng))
  4.     MsgBox "最高成值" & K
  5. End Sub
第四题:

  1.     Sub 区域选择()
  2.         Dim rng As Range
  3.         Set rng = Application.InputBox("请选择区域", "选择区域", , , , , , 8)
  4.         MsgBox "选择的区域为:" & rng.address
  5.     End Sub
33楼
玉丫头
听课群里也是这个ID
第1题:
1)输入的数据类型可以控制;
2)错误预防
第2题:
  1. Sub 批量创建工作表()
  2. Dim yearnum, i
  3.     Worksheets.Add Count:=255
  4.     yearnum = Application.InputBox("请输入需要创建工作表的年份", "输入年份", year(Date), Type:=1)
  5.     Worksheets.Add Count:=DateSerial(yearnum + 1, 1, 0) - DateSerial(yearnum, 1, 0) - Worksheets.Count
  6.     For i = 1 To Worksheets.Count
  7.         Worksheets(i).Name = i & "日"
  8.     Next i
  9. End Sub
第3题:
  1. Sub 任意科目成绩最大值()
  2. Dim km As Byte
  3.     km = Application.InputBox("请选择需要计算的科目:" & Chr(10) & "输入1:语文" & Chr(10) & "输入2:数学" & Chr(10) & "输入3:地址" _
  4.     & Chr(10) & "输入4:化学" & Chr(10) & "输入5:**", "选择计算科目", 1, Type:=1)
  5.     MsgBox WorksheetFunction.Index(Range("b1:f1"), km) & "科目成绩最大值为:" & WorksheetFunction.Max(Range("a2:a11").Offset(, km))
  6. End Sub
第4题:
  1. Sub 返回选取区域的地址()
  2. Dim rng As Range, address As String
  3.     If TypeName(Selection) = "Range" Then
  4.         address = Selection.address
  5.     Else
  6.         address = ""
  7.     End If
  8.     Set rng = Application.InputBox("请选择区域", "区域", address, Type:=8)
  9.     MsgBox "已选择区域的地址为:" & rng.address
  10. End Sub
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

免责声明

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

评论列表
sitemap