1

私は奇妙な問題を抱えています。私はAccessとVBAに慣れていないので、ばかげた間違いかもしれません。

Private backColorCycle As Integer
Private doneRows As New Dictionary


Private Sub AlternateGroupColor()
    If Not doneRows.Exists(Me.JCH_Shape) Then
        '... some stuff that assigns a value to backColorCycle
    Else
        '... some stuff that assigns a value to backColorCycle
    End If

    doneRows.Item(Me.JCH_Shape) = backColorCycle


    Detail.BackColor = QBColor(doneRows.Item(Me.JCH_Shape))
    GroupHeader0.BackColor = QBColor(doneRows.Item(Me.JCH_Shape))
End Sub

AlternateGroupColor() は、(Access の OnFormat イベントによって) 繰り返し呼び出されるイベント ハンドラーです。文字列である Me.JCH_Shape は、一連の値を 2 回循環します。関数が呼び出されると、A、B、C、A、B、C のいずれかになる可能性があるため、値がいつ検出されたかを知りたいと考えています。値を doneRows に格納し、値が既に存在するかどうかを確認することで、これを判断したかったのです。ただし、 Me.JCH_Shape が実際に異なる値を持ち、 doneRows.Item(Me.JCH_Shape) が関数の最後に期待する値を返すことを確認したにもかかわらず、doneRows.Count は 1 より大きくなることはありません。サブの辞書に加えた変更が呼び出されるたびにリセットされるかのように、その理由はわかりません。範囲の問題のように感じますが、できます」

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1