Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bereichsanpassung z. einfärben d. Formelergebnisse

Bereichsanpassung z. einfärben d. Formelergebnisse
sharky1000
Hallo,
ich möchte in einer Tabelle Formelergebnisse abhängig vom Ergebnis einfärben.
Zur automatischen Aktualisierung verwende ich die Funktion =HEUTE() in einer Zelle.
Wie passe ich das folgende, hier gefundene Makro an, dass es nur für den Zellbereich C4:N33 greift?
  • Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 Then                                  ' Wenn Fokus auf Spalte A dann ...
    Select Case Cells(Target.Row, 1)           ' ... selektierte Zelle prüfen ob Inhalt ...
    Case Is = "Meier"                                   ' gleich "Meier", dann ...
    Cells(Target.Row, 1).Interior.ColorIndex = 3    ' Hintergrundfarbe rot
    Case Is = "Müller"                                  ' gleich "Müller", dann ...
    Cells(Target.Row, 1).Interior.ColorIndex = 6    ' Hintergrundfarbe gelb
    Case Is = "Huber"                                  ' gleich "Huber", dann ...
    Cells(Target.Row, 1).Interior.ColorIndex = 7    ' Hintergrundfarbe pink
    Case Is = "Schmidt"                                  ' gleich "Schmidt", dann ...
    Cells(Target.Row, 1).Interior.ColorIndex = 8    ' Hintergrundfarbe cyan
    Case Is = ""
    Cells(Target.Row, 1).Interior.ColorIndex = 0
    ' hier können weitere Zuweisungen folgen
    End Select                                              ' Ende Anweisung
    End If
    End Sub
    

  • Danke im Voraus für Eure Hilfe.
    Warum verwendest du nicht die Bedingt-...
    29.12.2010 18:36:06
    Luc:-?
    …Formatierung, Sharky?
    Hast du mehr als 3 Bedingungen? Wenn es so ist und die Voraussetzungen erfüllt sind, könnte es auch mit dynamisiertem BedingtFormat klappen; ebenfalls unter VBA und derselben Ereignisprozedur, aber weniger VBA-Anpassungsarbeit, dafür aber zusätzl Vorbereitung im Blatt, was für einen xlProfi ein Klacks wäre. Übrigens, wer in VBA gut ist, sollte auch diese Anpassung selbständig bewältigen können bzw bräuchte erst gar nicht eine Fremdproz verwenden müssen. Die Idee sollte dann schon reichen… :->
    Gruß Luc :-?
    Anzeige
    AW: Warum verwendest du nicht die Bedingt-...
    30.12.2010 12:08:25
    sharky1000
    Hallo Luc:-?
    Danke für deine Antwort und den Link.
    Wenn ich nur drei Bediungungen hätte, wäre das Problem schon 'gegessen'.
    Da ich mehr als drei Bedingungen abfragen muss, habe den Code aus den Link an meine Bedürfnisse etwas angepasst.
    Set RaBereich = Range("B2:AF50")
    For Each RaZelle In RaBereich
    If Not Intersect(RaZelle, RaBereich) Is Nothing Then
    With RaZelle
    Select Case .Value ' Zellinhalt vergleichen
    Case "~P"
    ' Füllfarbe Hellblau
    .Interior.ColorIndex = 33

    Es soll nun der Wert hinter der Tilte welche immer rechts steht mit Case.Value geprüft werden.
    (Die Tilte verwende ich nur als Trennzeichen zur Selektion.) Wenn man hier mit unsichtbaren ASCII-Zeichen arbeiten könnte, würde die Tabelle übersichtlicher.)
    Als Zellformel für die Abfage der Zelle A2 würde dies in etwa so aussehen:
    =RECHTS(A2;LÄNGE(A2)-FINDEN("~P";A2))
    Ich möchte diese Formel in das VBA-Script in die With-Schleife übertragen, damit alle inRaBereich definierten Zellen auf den hinter der Tilte stehenden Wert "P" geprüft werden.
    Zur Verdeutlichung:
    Der ermittelte Wert einer Zelle lautet "xyz xyz xyzy~P" - Diese sollte hellblau markiert werden.
    Bezüglich meiner Einschätzung zu VBA gut. - Ich wußte nicht, dass hier die Messlatte so hoch aufgehängt wird. - Die meisten einfacheren Programme habe ich bisher ganz gut hinbekommen. - Als Nutzer mit bescheidenen VBA-Kenngnissen würde ich mich daher nicht bezeichnen. (Obwohl diese Einschätzung je nach Sichtweise sehr relativ sein kann.)
    Anzeige
    OT nicht sichtbare ASCII Zeichen
    30.12.2010 12:54:10
    Reinhard
    Hallo Sharky,
    ::::(Die Tilte verwende ich nur als Trennzeichen zur Selektion.)
    ::::Wenn man hier mit unsichtbaren ASCII-Zeichen arbeiten könnte, würde die Tabelle übersichtlicher.)
    Das Leerzeichen ist unsichtbar.
    In Excel
    =Zeichen(160) auch (Schrift Arial)
    Alternativ in Excel, links Alt halten und rechts im Zahlenblock 255 eingeben.
    Vba:
    
    Sub tt()
    MsgBox ">>>" & Chr(160) & "

    Gruß
    Reinhard
    AW: OT nicht sichtbare ASCII Zeichen
    30.12.2010 13:16:05
    sharky1000
    Hallo Reinhard,
    danke für den Tipp. - Hat super funktioniert. - Dieser Teil meiner Frage wäre somit geklärt :-)
    Jetzt fehlt mir nur noch die Case Abfrageformel
    Anzeige
    Frage noch offen m.T. f. Sharky
    30.12.2010 13:30:10
    Reinhard
    Hallo Sharky,
    ich habe extra oben rechts "Frage noch offen angeklickt, dann kommt die Frage in die Liste offene Fragen.
    Leider muß ich jetzt für Stunden weg.
    Frage noch offen.
    Gruß
    Reinhard
    AW: Frage noch offen m.T. f. Sharky
    30.12.2010 13:39:10
    sharky1000
    Danke für den Hinweis. - Sorry, habe den Haken für "Frage noch offen" übersehen.
    AW: Bereichsanpassung z. einfärben d. Formelergebnisse
    30.12.2010 16:46:12
    sharky1000
    Ich habe ein bisschen weiter am Code, der einige Case Abfragen mehr beinhaltet, gebastelt.
    Ich verstehe allerdings nicht, warum ich auch im Debug-Modus nie in die Interior.ColorIndex Zeile komme, obwohl StrTarget z.B. "P" als Wert enthält.
    ~
    
    Private Sub Worksheet_Calculate()
    Dim i As Integer                        ' Schleifenzähler
    Dim IntZähl As Integer                  ' Zähler für Stelle CHR (160)
    Dim StrTarget As String                 ' Zelleninhalt ab CHR (160)
    Dim RaBereich As Range                  ' Variable für Bereich
    Dim RaZelle As Range                    ' Variable für Zelle
    ' Bereich der Wirksamkeit
    Set RaBereich = Range("B2:AF50")
    For Each RaZelle In RaBereich
    If Not Intersect(RaZelle, RaBereich) Is Nothing Then
    With RaZelle
    'Sonderzeichen suchen
    If InStr(.Value, Chr(160)) > 0 Then
    IntZähl = InStr(.Value, Chr(160))
    StrTarget = Right(.Value, Len(.Value) - IntZähl)
    Select Case .Value          ' Zellinhalt vergleichen
    Case Right(.Value, Len(.Value) - IntZähl) = "P"
    ' Füllfarbe Hellblau
    .Interior.ColorIndex = 33
    Case Right(.Value, Len(.Value) - IntZähl) = "TaD"
    ' Füllfarbe Dunkelblau
    .Interior.ColorIndex = 23
    Case Else
    ' keine Füllfarbe
    .Interior.ColorIndex = xlNone
    End Select
    Else
    End If
    End With
    End If
    Next RaZelle
    'ActiveSheet.protect                     ' Tabellenschutz setzen
    Set RaBereich = Nothing                 ' Variable leeren
    End Sub
    
    ~
    Anzeige
    AW: Bereichsanpassung z. einfärben d. Formelergebnisse
    30.12.2010 16:50:04
    sharky1000
    Sorry, habe schon wieder vergessen, hier im Forum "Frage noch offen" anzuklicken
    Wo steht gleich noch mal das geschützte...
    30.12.2010 18:49:13
    Luc:-?
    …Leerzeichen, Sharky,
    direkt vor P bzw TaD? Dann sollte das klappen, es sei denn, der Text ist doch noch länger und P bzw TaD nicht sein Ende.
    Übrigens, wenn du meinem Link gefolgt bist, weißt du, das du die schlechtere, weil vba-aufwandsintensivere und damit weniger nutzerfrdl und nachträgl weniger anpassungsfähigere 0815-Variante gewählt hast. Hierbei handelt es sich nicht um bedingte Formatierung, sondern um ein Ersatzkonstrukt, dass mich nicht interessiert, weil ich Besseres verlinkt hatte…
    Viel Spaß beim Basteln! ;->
    GRutsch, Luc :-?
    Anzeige
    AW: Wo steht gleich noch mal das geschützte...
    03.01.2011 15:09:35
    sharky1000
    Hi,
    erst einmal wünsche ich allen hier im Forum ein glückliches und gesundes neues Jahr.
    Danke auch an Luc :-? und Reinhard für die Unterstützung.
    @ Luc:-? Es lag nicht an einem Leerzeichen in meiner Abfrage.
    Der Fehler lag an meiner Select Case Abfrage.
    Nachdem ich diese wie folgt korrigiert hatte
    StrTarget = Right(.Value, Len(.Value) - IntZähl)
    Select Case StrTarget ' Zellinhalt vergleichen
    Case Is = "P" ' Füllfarbe Hellblau
    .Interior.ColorIndex = 33
    läuft das Makro so wie es soll :-)
    cu
    sharky1000

    302 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige