m = (m + 1) Mod 7有问题。
当m=6时,(m + 1) Mod 7=0
Cells(j, m) 为Cells(j, 0)
我们知道行列号都是从1开始的,所以当然会报错。
另外For j = 1 To 20
然后又j = 2
并且For i = 0 To 8
然后又 i = 0
这不都是死循环了么?
Data什么意思?应该是Date吧。
而且整个程序逻辑混乱。帮你改写一下,你看能不能用:
Sub test()
m = Weekday(Now, 2)
For j = 1 To 20
For i = 0 To 6
Cells(j, (i + 1)) = Date - m + i + (j 7) - 7
Next
Next
End Sub
还可以进一步改写:
Sub test()
m = Weekday(Now, 2)
For j = 1 To 20
For i = 0 To 6
If j = 1 And i < m Then
Cells(j, (i + 1)) = ""
Else
Cells(j, (i + 1)) = Date - m + i + (j 7) - 7
End If
Next
Next
End Sub
在A2输入:
=ROUNDUP(DATEDIF(DATE(YEAR(A1),1,1),A1-WEEKDAY(DATE(YEAR(A1),1,1),3)+8,"yd")/7,0)
以星期天为一周中的第一天计算,不管是什么版本,都可以。
weekday("2010-4-8")
取的参数中的日期是一个星期的第几天,星期天为1、星期一为2、星期二为3
依此类推。
配合weekdayname()更好。
weekdayname(weekday("2010-4-8"))
Sub 当前日期()
Dim idate As Date
idate = Date
ActiveSheetRange("A1")Value = idate
End Sub
以上就是关于excel使用vba如何能够按周输入数据全部的内容,包括:excel使用vba如何能够按周输入数据、如何在excel中得到周数高手进!、VBA如何判断一个日期是什么星期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)