VBA Bedingte Formatierung

Elscha

Mitglied
Hallo

Ich habe in Acces ein Endlosformular, in einer Spalte habe ich dort eine bedingte Formatierung, diese funktioniert auch einwandfrei. Am unteren Bildschirmrand will ich die Summe davon bilden und auch bedingt formatieren. Dazu holle ich per SQL die Summe und füge sie dort ein.
Nun zu meinem Problem:
Egal ob mit bedingter formatierung oder per VBA, funktioniert es dort in dem Summen-Textfeld nicht. Mit der Bedingten Formatierung, ist das Fals immer Rot (Es sollte Rot, Grün oder default schwarz sein).
Hier der VBA Code:
Code:
'SQL-Befehl um die Summen zu berechnen
    sqlBefehl = "SELECT SUM(BASISKOSTEN) AS SUM_MAT_VERGLEICH, SUM(AKTUELLKOSTEN) AS SUM_MAT_AKTUELL, SUM(DIFFKOSTEN) AS SUM_MAT_DIFF, SUM(BASIS_FGK) AS SUM_FGK_VERGLEICH, SUM(AKTUELL_FGK) AS SUM_FGK_AKTUELL, SUM(DIFF_FGK) AS SUM_FGK_DIFF, SUM(BASIS_HK) AS SUM_HK_VERGLEICH, SUM(AKTUELL_HK) AS SUM_HK_AKTUELL, SUM(DIFF_HK) AS SUM_HK_DIFF FROM (" & sqlBefehl & ") AS temp"
    resultSet.Open sqlBefehl, con
    resultSet.MoveFirst

    'Summen ins GUI schreiben
    sum_mat_vergleich.Value = resultSet![sum_mat_vergleich]
    sum_mat_aktuell.Value = resultSet![sum_mat_aktuell]
    sum_mat_diff.Value = resultSet![sum_mat_diff]
    sum_fgk_vergleich.Value = resultSet![sum_fgk_vergleich]
    sum_fgk_aktuell.Value = resultSet![sum_fgk_aktuell]
    sum_fgk_diff.Value = resultSet![sum_fgk_diff]
    sum_hk_vergleich.Value = resultSet![sum_hk_vergleich]
    sum_hk_aktuell.Value = resultSet![sum_hk_aktuell]
    sum_hk_diff.Value = resultSet![sum_hk_diff]
    
    If Not IsNull(sum_mat_diff.Value) And Not IsNull(sum_fgk_diff.Value) And Not IsNull(sum_hk_diff.Value) Then
        If sum_mat_diff.Value < 0 Then
            Me!sum_mat_diff.ForeColor = vbGreen
        ElseIf sum_mat_diff.Value > 0 Then
            Me!sum_mat_diff.ForeColor = vbRed
        End If
        If sum_fgk_diff.Value < 0 Then
            Me!sum_fgk_diff.ForeColor = vbGreen
        ElseIf sum_fgk_diff.Value > 0 Then
            Me!sum_fgk_diff.ForeColor = vbRed
        End If
        If sum_hk_diff.Value < 0 Then
            Me!sum_hk_diff.ForeColor = vbGreen
            Debug.Print "HK: Grün"
        ElseIf sum_hk_diff.Value > 0 Then
            Form_anzeige_fzg_komplett!sum_hk_diff.ForeColor = vbRed
            Debug.Print "HK: Red"
        End If
    End If
Auch habe ich diesen Code (Nur die If-Anweisungen) in die Form_Current() Methode kopiert.
Hier bekomme ich im Debug Fenster die die Ausgabe "HK: Red", der Text bleibt jedoch schwarz :-(
 
Hi...

Ist das Feld gleich wie die andern oder hat es eine andere Bezeichnung
Ich würde auf den Code verzichten und mit einer Bedingten Formatierung Arbeiten.

lg Tody
 
Bei beiden Feldern, handelt es sich um Textfeldern. Das Textfeld im Endlosformular, heißt Text16, die Textfelder in dennen die Summenausgeben werden sollen heißen sum_....., also haben sie alle unterschiedliche Namen. Wie gesagt die Bedingt Formatierung von Access funktioniert leider nicht, die färben das Textfeld konsitent rot ein, auch wenn laut Regel es grün eingefärbt werden sollte.
 
Hi...

In welcher Reihenfolge setzt du die Bedingten-Formatierungen?
Beachte das Sie der Reihe nach abgefragt werden wenn also die erste True rückgiebt werden die anderen nicht mehr berücksichtigt...

Stell mir Bitte die Formeln und die Reihenfolge hier rein...

lg Tody
 
Feldwert ist > 0 dann Rot
Feldwert ist < 0 dann Grün
Standard für das Feld ist schwarz, bei dem Endlosformular und den Summenfeldern ist es genau gleich.
Egal ob ich nun eine positive oder negative Summe habe, ist der Text in roter Schrift.
 
Probier mal die Zeile "If Not IsNull(sum_mat_diff...." auszukommentieren
Obs dann geht...

Bzw. schreibs mal so an...
Code:
   If Not IsNull(sum_mat_diff.Value) Then
        If sum_mat_diff.Value < 0 Then
            Me!sum_mat_diff.ForeColor = vbGreen
        ElseIf sum_mat_diff.Value > 0 Then
            Me!sum_mat_diff.ForeColor = vbRed
        End If
   End If
   If Not Not IsNull(sum_fgk_diff.Value) Then
        If sum_fgk_diff.Value < 0 Then
            Me!sum_fgk_diff.ForeColor = vbGreen
        ElseIf sum_fgk_diff.Value > 0 Then
            Me!sum_fgk_diff.ForeColor = vbRed
        End If
   End If
   If Not Not IsNull(sum_hk_diff.Value) Then
        If sum_hk_diff.Value < 0 Then
            Me!sum_hk_diff.ForeColor = vbGreen
            Debug.Print "HK: Grün"
        ElseIf sum_hk_diff.Value > 0 Then
            Form_anzeige_fzg_komplett!sum_hk_diff.ForeColor = vbRed
            Debug.Print "HK: Red"
        End If
   End If

lg Tody
 

Neue Beiträge

Zurück