私の仕事ではこの問題を解決するために取り組んでいます。私はExcelでNetworkDaysと同様の機能を作成しようとしています。これは、休日を除く2つの日の間の営業日を返します。これは、私が再入力し、それを動作させるために微調整しようとしたコードサンプルです。変数dateIncは、増分するvarです。それは私が試してstartDate番号と等しい値を設定しようとするとオーバーフローするようです。この開始日は、開始日から終了日までのdateInc数をカウントします。私はこれが素人の間違いか、私が学ぶ必要がある本当の問題かどうかだけは分かりません。私は、エラー処理を追加してエラーをスキップして再開しようとしましたが、それはまさにそのすべてです。私はすべての建設的な批判に開放されており、コーディングの実践と解決策についてのアドバイスは大歓迎です。MSアクセス変数の宣言/オーバーフローの問題
注:私は時々起こる不均一な日付値に対応しようとしました。これは何も変わらず、私のデータは日付の値に時間がないことが起こりました。
Function Workdays(ByRef startDate As Date, ByRef endDate As Date) As Integer
Dim countDays&, dateInc#, startLong#, endLong#, strSQL$
Dim rs As Recordset
Dim db As Database
'intialize variables to avoid overflow|Note dates are converted to a double
countDays = 0
dateInc = 0
startLong = CDbl(startDate)
endLong = CDbl(endDate)
'SQL select statement
strSQL = "Select holDate from Holidays"
'Open database using SQL
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
'set the date comparison to the start date's number format
dateInc = startLong
Do Until dateInc = endLong
Select Case Weekday(CDate(dateInc))
Case vbSaturday
'Nothing happens
Case vbSunday
'Nothing happens
Case Else
rs.FindFirst ("holDate = # " & Format(CDate(dateInc), "mm/dd/yyyy") & "#")
If rs.NoMatch = True Then
countDays = countDays + 1
End If
End Select
dateInc = dateInc + 1
Loop
Set rs = Nothing
Set db = Nothing
dateInc = 0
Workdays = countDays
End Function
最初に変数をDoubleとして宣言してみましたか? –
@Benno Grimmはい私は長いとダブルを試みました。それは何の違いもありませんでした。 dateIncの数値は常に増分されるか、何らかの形で最大値に設定されるようです。 – Stephen09
なぜこれが起こっているのか本当にわかりませんが、オーバーフローが発生する行がわかっている場合、ユーザーMsgBoxesは変数(すべて)と現在のデータ型(https://msdn.microsoft.com/)の値をチェックします。 en-gb/library/s4zz68xc.aspx)..トラブルシューティングはここで助けになるでしょう –