VBA第十讲练习题解析
VBA 第十讲练习题
第一题
背景知识
val函数的参数是字符串,格式为 val(字符串)
我对这函数的理解是:他先将字符串的的空格去了,然后从左往右找数字,直到遇到非数字或不能再构成数字为止。
如:
Val(" 2 3 . 5 A 8 . 54") 的结果是23.5(找到A时,A是非数字就停了)
Val(" 2 3 . 5 8 . 54") 的结果是23.58(找到第二个.时不能与前面的构成数字,停止)
Val(" X 2 3 . 5 8 . 54") 的结果是0(找到X时,X是非数字,停止)
Val(" 8 . 5 4 ") 的结果是8.54(这没说的,非正常)
题目1:
复制“日报表模板”工作表(已隐藏)至本工作簿最后一个位置,复制后的工作表名称为最后的日期天数+1&"报表"的格式。
如:
当前情况下,没有任何一天的日报表,则新复制的工作表名称是“1日报表”,如果再添加时就是1+1=2日报表。如果目前已存在5天的日报表,则复制后的工作表名称应为“6日报表”
注:“日报表模板”工作表复制后要隐藏起来
Sub 日报表格式生成()
Dim i As Integer
Dim ws As Worksheet
Set ws = Sheets("日报表模板")
ws.Visible = -1
i = Val(Sheets(Sheets.Count).Name)
ws.Copy after:=Sheets(Sheets.Count)
If i Then
ActiveSheet.Name = i + 1 & "日报表"
Else
ActiveSheet.Name = "1日报表"
End If
ws.Visible = 0
Sheets(1).Select
End Sub
第二题:把所有日报表另存为工作簿到本文夹下,工作簿名称为工作表的名称
Sub 另存报表()
Dim i As Integer
Dim sh As Worksheet
For i = 1 To Sheets.Count
If Sheets(i).Name Like "*日报表" Then
Sheets(i).Copy
Set sh = ActiveSheet
sh.SaveAs ThisWorkbook.Path & "\" & sh.Name & ".xls"
ActiveWorkbook.Close True
End If
Next
End Sub