我试图设置一个系统,如果一个开始和结束日期介于两个不同的星期之间,我想找到第一周的最后一天(本例中是星期五),然后输入到一个单元格,以便第一个日期到一周的最后一天在同一行,并创建一个下一个单元格,它将从ldotw转到下一个ldotw或结束日期。
到目前为止我的代码是:
With Sheets(p)
If WorksheetFunction.WeekNum(startdate, 15) <> _ WorksheetFunction.WeekNum(enddate, 15) Then
ldotw = UserForm1.startdate.Value - _
Weekday(UserForm1.startdate.Value, vbFriday) + 7
While Not equal
.Cells(oneRow, 6) = WorksheetFunction.WeekNum(startdate, 15)
.Cells(oneRow, 7) = UserForm1.startdate.Text
.Cells(oneRow, 9) = ldotw
'makes sure to get the last week of values
If WorksheetFunction.WeekNum(startdate, 15) = _ WorksheetFunction.WeekNum(enddate, 15) Then
equal = True
End If
'sets up variables for the next week
oneRow = oneRow + 1
UserForm1.startdate.Text = ldotw
ldotw = ldotw + 7
If WorksheetFunction.WeekNum(startdate, 15) = WorksheetFunction.WeekNum(enddate, 15) Then
ldotw = UserForm1.enddate.Value
End If
Wend
ElseIf WorksheetFunction.WeekNum(startdate, 15) = _ WorksheetFunction.WeekNum(enddate, 15) Then
.Cells(oneRow, 7) = UserForm1.startdate.Text
.Cells(oneRow, 9) = ldotw
hours = .Cells(oneRow, 9) - .Cells(oneRow, 7)
End If
End With
ldotw = UserForm1.startdate.Value - Weekday(UserForm1.startdate.Value, vbFriday) + 7
发生错误。
答案 0 :(得分:0)
OP自己解决了原始问题,这个答案是根据他关于删除日期时间部分的评论中的第二个问题的请求发布的。
我已经完成了更多的调试,我得到了'ddotw = sDate + 8 - 工作日(sDate,vbFriday)&#39;这将回到星期五。但它会在您通过表单提交的任何时间保留时间。关于如何将时间和分钟转到00:00(12 AM)的任何想法
日期存储为Double类型,时间部分由小数部分表示。所以Int(DateVar)
将摆脱时间组件。