2014-02-17 3 views
0

화요일, 목요일, 토요일 및 일요일의 양을 두 시간 간격으로 계산하는 VBA에서 간단한 계산을하고 있습니다. 계속해서 여러 가지 오류가 발생하지만, 최선을 다해 코드는 정상입니다. 나는 어떤 도움이나 개정을 주시면 감사하겠습니다. 특히 나는 당신은 MS의 문서를 읽을 필요가 내 DATEPART()가 결함이Visual Basic/Access 오류 424 개체 필요

Public Function ModWeekdays(ByRef NotificationDate As Date, ByRef OrderDate As Date, ByRef PlacementDate As Date, ByRef ReleaseDate As Date) As Integer 
    Dim numWeekdays As Integer 
    Dim totalDays As Integer 
    Dim totaldays2 As Integer 
    Dim WeekendDays As Integer 
    Dim WeekendDays2 As Integer 
    numWeekdays = 0 
    WeekendDays = 0 
    WeekendDays2 = 0 

    'totalDays = DateDiff(Day, NotificationDate, OrderDate) + 1 

    'for i as integer = 1 to totalDays 

     If DatePart(Day, NotificationDate) = 1 Then 
      WeekendDays = WeekendDays + 1 
     End If 
     If DatePart(dateinterval.Weekday, startDateNotificationDate) = 3 Then 
      WeekendDays = WeekendDays + 1 
     End If 
     If DatePart(dateinterval.Weekday, NotificationDate) = 5 Then 
      WeekendDays = WeekendDays + 1 
     End If 
     If DatePart(dateinterval.Weekday, NotificationDate) = 7 Then 
      WeekendDays = WeekendDays + 1 
     End If 
      NotificationDate = DateAdd("d", 1, NotificationDate) 
      '/////////////////////////////////////////////////////////////////////////// 

    totaldays2 = DateDiff(dateinterval.Day, PlacementDate, ReleaseDate) + 1 

     If DatePart(dateinterval.Weekday, PlacementDate) = 1 Then 
      WeekendDays2 = WeekendDays2 + 1 
     End If 
     If DatePart(dateinterval.Weekday, PlacementDate) = 3 Then 
      WeekendDays2 = WeekendDays2 + 1 
     End If 
     If DatePart(dateinterval.Weekday, PlacementDate) = 5 Then 
      WeekendDays2 = WeekendDays2 + 1 
     End If 
     If DatePart(dateinterval.Weekday, PlacementDate) = 7 Then 
      WeekendDays2 = WeekendDays2 + 1 
     End If 
      PlacementDate = DateAdd("d", 1, PlacementDate) 

         numWeekdays = WeekendDays + WeekendDays2 

         Dim MyReturnVal As Integer 
MyReturnVal = ModWeekdays(NotificationDate, OrderDate, PlacementDate, ReleaseDate) 


End Function 
+0

어떤 오류가 표시됩니까? 오류가 있다고 생각하게 한 것은 무엇입니까? 우리는 당신의 마음을 읽을 수 없습니다. – enderland

+0

컴파일하려고하면 많은 오류가 발생합니다. 내가 처음 만나는 것은 DatePart()의 "day"가 강조 표시되어 있고 424 객체가 필요하다는 오류 메시지가 있습니다. – NavyNuke

답변

0

것 같아요 -

DATEPART (간격, 날짜 [, firstdayofweek [, firstweekofyear]])를

DATEPART 함수 구문에는 다음과 같은 명명 된 인수가 있습니다.

간격 필수입니다. 반환 할 시간 간격 인 문자열 식입니다.

날짜 필수. 평가할 변형 (날짜) 값입니다.

firstdayofweek 선택 사항. 주의 최초의 요일을 지정하는 정수입니다. 지정하지 않으면 일요일로 간주됩니다.

firstweekofear 선택 사항. 1 번째의 주를 지정하는 정수입니다. 지정하지 않으면 첫 번째 주를 1 월 1 일이 발생한 주라고 가정합니다.

설정

간격 인수는 이러한 설정이 있습니다

코드의 첫 번째 문제 라인은 대한 마찬가지로

'If DatePart(Day, NotificationDate) = 1 Then 
    If DatePart("w", NotificationDate) = 1 Then 

이러시면 정정

yyyy Year 
q Quarter 
m Month 
y Day of year 
d Day 
w Weekday 
ww Week 
h Hour 
n Minute 
s Second 

설정 설명 남은, "w"또는 "d"에 넣어, 그것이 당신이 원하는 것이라면.

마지막으로 입력 인수가 정확한지 확인하십시오. 내 샘플 args 알고리즘의 재귀 특성으로 인해 "메모리 부족"오류를 신속하게 생산했습니다. tkx

+0

감사합니다. 시도해 보겠습니다. – NavyNuke

관련 문제