tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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がどの時点で複雑になるか、確認してみます。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。