none
Access 2013/2016 Bedingte Formatierung via VBA im Endlosformular

    Frage

  • Ich versuchen mit VBA eine bedingte Formatierung herzustellen - klappt leider nicht

    ich bekomme immer nur eine Farbe in allen Feldern der Spalte angezeigt(sprich immer die zuletzt zur Formatierung ausgewählte Farbe)

    mein CODE (frmSDFiliale ist das Feld)

    Aufruf beim laden oder beim öffnen getestet

    was mache ich falsch

    With frmSDFiliale.FormatConditions
        .Delete
        .Add acExpression, , [frmSDFiliale] = 56
        .item(0).BackColor = RGB(221, 235, 247)
        
        .Add acExpression, , [frmSDFiliale] = 58
        .item(1).BackColor = RGB(202, 242, 202)
        
        .Add acExpression, , [frmSDFiliale] = 59
        .item(2).BackColor = RGB(255, 163, 163)
        
        .Add acExpression, , [frmSDFiliale] = 60
        .item(3).BackColor = RGB(248, 207, 182)
        
        .Add acExpression, , [frmSDFiliale] = 61
        .item(4).BackColor = RGB(142, 186, 226)
        
        .Add acExpression, , [frmSDFiliale] = 63
        .item(5).BackColor = RGB(255, 255, 121)
        
        .Add acExpression, , [frmSDFiliale] = 64
        .item(6).BackColor = RGB(148, 228, 148)
        
        .Add acExpression, , [frmSDFiliale] = 65
        .item(7).BackColor = RGB(255, 105, 105)
        
        .Add acExpression, , [frmSDFiliale] = 66
        .item(8).BackColor = RGB(241, 154, 101)
        
        .Add acExpression, , [frmSDFiliale] = 106
        .item(9).BackColor = RGB(214, 187, 235)
        
        .Add acExpression, , [frmSDFiliale] = 108
        .item(10).BackColor = RGB(159, 95, 207)
        
        .Add acExpression, , [frmSDFiliale] = 141
        .item(11).BackColor = RGB(202, 242, 202)
        
        .Add acExpression, , [frmSDFiliale] = 142
        .item(12).BackColor = RGB(255, 163, 163)
        
        .Add acExpression, , [frmSDFiliale] = 143
        .item(13).BackColor = RGB(248, 207, 182)
        
        .Add acExpression, , [frmSDFiliale] = 145
        .item(14).BackColor = RGB(221, 235, 247)
    End With

    Donnerstag, 10. August 2017 14:28

Antworten

  • Hallo MCDPone,

    versuches es einmal hiermit:

    Dim fc as FormatCondition

    With DeinTextFeld .FormatConditions.Delete Set fc = .FormatConditions.Add(acFieldValue, acEqual, 56) fc.BackColor = RGB(0, 255, 0) Set fc = .FormatConditions.Add(acFieldValue, acEqual, 57) fc.BackColor = RGB(255, 0, 0) . . . . End With

    Der Code sollte in Form_Load stehen und "DeinTextFeld" musst Du natürlich noch auf den Namen des Feldes der entsprechenden Spalte setzen.

    Grüße

    Roland



    • Bearbeitet Roland Franz Freitag, 11. August 2017 06:32
    • Als Antwort markiert MCDPone Freitag, 11. August 2017 07:33
    Freitag, 11. August 2017 06:31

Alle Antworten

  • Hallo MCDPone,

    versuches es einmal hiermit:

    Dim fc as FormatCondition

    With DeinTextFeld .FormatConditions.Delete Set fc = .FormatConditions.Add(acFieldValue, acEqual, 56) fc.BackColor = RGB(0, 255, 0) Set fc = .FormatConditions.Add(acFieldValue, acEqual, 57) fc.BackColor = RGB(255, 0, 0) . . . . End With

    Der Code sollte in Form_Load stehen und "DeinTextFeld" musst Du natürlich noch auf den Namen des Feldes der entsprechenden Spalte setzen.

    Grüße

    Roland



    • Bearbeitet Roland Franz Freitag, 11. August 2017 06:32
    • Als Antwort markiert MCDPone Freitag, 11. August 2017 07:33
    Freitag, 11. August 2017 06:31
  • Genauso geht es - Vielen Dank
    Freitag, 11. August 2017 07:33
  • Hallo!

    Nur noch kurz die Erklärung, warum die anfangs gezeigte Variante nicht funktionierte:

    Ausgangscode:

      .Add acExpression, , [frmSDFiliale] = 56

    Versuch einen Aha-Effekt zu erreichen ;) :

    dim Bedingung as String
    
    Bedingung = [frmSDFiliale] = 56
    
      .Add acExpression, , Bedingung
    
    msgbox "Bedingung: " & Bedingung & vbnewline & "Richtig wäre: [frmSDFiliale] = 56"
    
    

    Problem erkannt?

    Tipp für die Fehlersuche: Du übergibst einen Boolean-Wert statt einem Ausdruck.

    Für die Fehlerbehebung benögist du 2 Anführungszeichen.

    mfg
    Josef



    Code-Bibliothek für Access-Entwickler
    AccUnit - Testen von Access-Anwendungen
    Virtueller Access-Stammtisch

    Freitag, 11. August 2017 08:07