使用用户输入的日期VBA

时间:2015-06-18 15:52:19

标签: excel vba excel-vba

我试图设置一个系统,如果一个开始和结束日期介于两个不同的星期之间,我想找到第一周的最后一天(本例中是星期五),然后输入到一个单元格,以便第一个日期到一周的最后一天在同一行,并创建一个下一个单元格,它将从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发生错误。

1 个答案:

答案 0 :(得分:0)

OP自己解决了原始问题,这个答案是根据他关于删除日期时间部分的评论中的第二个问题的请求发布的。

  

我已经完成了更多的调试,我得到了'ddotw = sDate + 8 - 工作日(sDate,vbFriday)&#39;这将回到星期五。但它会在您通过表单提交的任何时间保留时间。关于如何将时间和分钟转到00:00(12 AM)的任何想法

日期存储为Double类型,时间部分由小数部分表示。所以Int(DateVar)将摆脱时间组件。