タイトル : Re^3: 「式が複雑すぎます」の対処について 投稿日 : 2016/07/07(Thu) 22:08 投稿者 : たまご
お世話になります。 ご返信ありがとうございます。 私が使っているのはVisual Basic 6.0です。 検証までしていただき、ありがとうございます。 あまり頻発するような事例ではないのですね。 ご質問に関してですが、 コンパイル後に試してみると、どういうわけかそのままエラーにならず進みます。 また、もう少し詳しくソースを書きますと、 Public Function GetPercentage(ByVal alDayEnd As Long, _ ByVal adteStart As Date) As Integer On Error GoTo ERR_HANDLER_RTE GetPercentage = GCI_RET_ERR Dim sDay As String '日付ごとの合計点の取得 For i = 0 To alDayEnd - 1 ' 日付 If i = 0 Then sDay = CStr(adteStart) Else sDay = DateAdd("d", 1, sDay) sDay = Format(sDay, GCSS_YYYYMMDD) End If ・・・という流れになるのですが、Forの一回目のループではsDay = CStr(adteStart)に正しく日にちが入ります。 日にちは必ず月初めの1日が入り、それから1日ずつ足していく流れになります。 上の関数の呼び出しのときは、 If GCI_RET_SUS <> GetPercentage(uJoken.iDayEnd, _ uJoken.dteStt) Then GoTo END_HANDLER_NML End If です。 1度目のループのときに For i = 0 To alDayEnd - 1で止めてみましたが、 alDayEnd = 7、adteStart = 2016/07/01 でした。 2度目のループ(エラーが起きるとき)は、sDayの時点で「式が複雑すぎます」になります。 これも一度カーソルを話して近づけると正しく2016/07/01になります。 ただ、この関数の中でsDayに値を入れているのがこの部分のみになります。 VBのソースの書き方というよりも、VB自体というか、パソコン自体の問題にも思えてきました。 sDayがどの時点で複雑になるか、確認してみます。 |