新建工作表并按日期命名 & 按此方式新建下月工作表

Sub 新建工作表()
Dim ShtName As String, sht As Worksheet '声明变量
ShtName = Format(Date, “yyyy-mm-dd”) '将今日日期格式化为“yyyy-mm-dd”格式
On Error Resume Next '如果执行时出错,那么继续执行下一句
Set sht = Worksheets(ShtName) '将名字等于变量shtname的工作表赋值给变量sht,如果不存在表Worksheets(ShtName)则error
If Err.Number = 0 Then '如果没有错误(表示存在名字等于变量shtname的工作表)
MsgBox "已经存在名为 " & ShtName & “的工作表”, vbInformation, “友情提示” '提示用户
Else '否则
'在最右边新建一个工作表,然后命名为shtname
Worksheets.Add(, Sheets(Sheets.Count)).Name = ShtName
End If
End Sub

Sub 新建下月工作表()
Dim Days As Byte, i As Byte, sht As Worksheet, ShtName As String '声明变量
On Error Resume Next '当执行代码出错时继续执行下一句
'计算下一个月的天数(DateSerial(Year(Date), Month(Date) + 2, 0)的含义是下下月的第0天,也就是下月的最后一天)
'使用day函数可以计算出下月最后一天属于该月的第几天,换言之则是计算下月的总天数,总天数是多少等下就建多少个表,days已经是数字格式了
Days = Day(DateSerial(Year(Date), Month(Date) + 2, 0))
Application.ScreenUpdating = False '关闭屏幕更新,提升效率
For i = 1 To Days '从1到下月的总天数
'将下月的0日再加上变量i从而产生新的日期,由于i的取值范围是1到下月的总天数,因此在循环语句中可以产生下月的每一天的日期
'然后再用Format函数将这些日期转换成“yyyy-mm-dd”格式,从而确保用它作为工作表名称是不会出错
ShtName = Format(DateSerial(Year(Date), Month(Date) + 1, 0) + i, “yyyy-mm-dd”)
Set sht = Worksheets(ShtName) '引用名称等于变量shtname的值的工作表,这个是假设Worksheets(ShtName)刚好存在,存在的话就直接移到最后面,就不要新建了
If Err.Number = 0 Then '如果引用时没有出错
sht.Move , Sheets(Sheets) '将该工作表移到最后面去
Else '否则
Worksheets.Add(, Sheets(Sheets.Count)).Name = ShtName '新建一个工作表,且以变量shtname的值命名
Err.Clear '清除错误,避免影响下一轮的判断
End If
Next
Application.ScreenUpdating = True '恢复屏幕更新
End Sub

ksheets.Add方法代表新建工作表,可以一次性创建最多255个工作表
Rem 通过工作表对象的Name属性可以为工作表重命名,本例中需要批量新建和重命名,因此得配合循环语句使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值