Office: VBA Zellen definiert färben

Helfe beim Thema VBA Zellen definiert färben in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe folgendes Problem. In meiner Matrix sollen die Zellen ihre Farbe nach Abhänigkeit der Buchstaben verändern. Mit der bedingten... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Nadsat1984, 11. Juli 2011.

  1. VBA Zellen definiert färben


    Hallo,

    ich habe folgendes Problem. In meiner Matrix sollen die Zellen ihre Farbe nach Abhänigkeit der Buchstaben verändern. Mit der bedingten Formatierung lässt sich nicht arbeiten, da ich mehr als 3 Bedingungen habe.
    Ich habe es schon mit einer If-Then-Else Anweisung ausprobiert.
    Die ersten drei Buchstaben färbten sich so wie gewünscht. Leider war ab Buchstabe "D" Schluß.
    Mit einer SelectCase Anweisung aus dem Forum konnte ich auch nur 3 Buchstaben einfärben.
    Für die Buchstaben "D" und "S" sollen aber auch noch Farben definiert werden.
    Kennt jemand die Lösung meines Problems?


    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Zelle As Range, Bereich As Range
    Set Bereich = Intersect(Target, Range("D16:AH16"))
    If Not Bereich Is Nothing Then
    For Each Zelle In Bereich
    Select Case Zelle.Offset(0, 1 - Zelle.EntireColumn.Column).Text
    Case Is = "A"
    Zelle.Interior.Color = 4
    Case Is = "B"
    Zelle.Interior.Color = 6
    Case Is = "C"
    Zelle.Interior.Color = 8
    Case Is = "D"
    Zelle.Interior.Color = 29

    Case Is = "S"
    Zelle.Interior.Color = 46

    Case Else
    Zelle.Interior.ColorIndex = xlColorIndexNone
    End Select
    Next Zelle
    End If
    End Sub
     
    Nadsat1984, 11. Juli 2011
    #1
  2. Hajo_Zi
    Hajo_Zi Erfahrener User
    ja schreibe weiter
    Case is ="E"
    ...
    Case is ="F"
    ....

    Gruß Hajo
     
    Hajo_Zi, 11. Juli 2011
    #2
  3. Exl121150 Erfahrener User
    Hallo,
    da kann ich Dir nur gratulieren, dass Du solche Adleraugen hast!

    Denn Zelle.Interior.Color=0 ist ja bekanntlich "Schwarz" und selbst bei Zelle.Interior.Color=29 für Buchstabe "D" kann ich nichts anderes als "schwarz" erkennen. Geht der Farbwert Richtung 128=RGB(128,0,0), beginnt sich ein "braun" (Mischung zwischen schwarz und rot) abzuzeichnen, und schließlich bei 255=RGB(255,0,0) ergibt sich ein volles Rot. Grün ergibt sich schließlich bei 255*256=65288=RGB(0,255,0) und blau bei 255*256*256=16711688=RGB(0,0,255),
    während (255*256+255)*256+255=16777215=RGB(255,255,255) gleich "weiß" ist.

    Dein Makro verhält sich derart, dass bei Änderung eines Wertes im Bereich D16:AH16 die betreffende Zelle in Abhängigkeit vom Wert (Buchstaben) in Zelle A16 eingefärbt wird.
     
    Exl121150, 11. Juli 2011
    #3
  4. VBA Zellen definiert färben

    Danke für die Antworten.
    Ich habe mein Makro jetzt so umgeschrieben das die Zellen sich wie gewünscht verändern.
    Einziges Problem besteht noch darin das dies auf dem gesamten Blatt passiert.

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngZelle As Range, strText As String
    Set Bereich = Intersect(Target, Range("D16:AV68"))
    Select Case Target.Value
    Case "A"
    Target.Interior.ColorIndex = 4
    Case "B"
    Target.Interior.ColorIndex = 6
    Case "C"
    Target.Interior.ColorIndex = 8
    Case "D".
    .
    .

    Was müsste ich ändern das sich die Zellen nur innerhalb meiner Matrix verändern?

    Gruß
     
    Nadsat1984, 11. Juli 2011
    #4
  5. Exl121150 Erfahrener User
    Hallo,

    indem Du den Select..End Select-Block mit folgender IF-Anweisung umschließst:
    Code:
      If Not Bereich Is Nothing Then
      ...
      End If
    und Bereich sollte als RANGE deklariert werden,
    also:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rngZelle As Range, strText As String
      Dim Bereich as Range
      Set Bereich = Intersect(Target, Range("D16:AV68"))
      If Not Bereich Is Nothing Then
      Select Case Target.Value
        Case "A"
        Target.Interior.ColorIndex = 4
        Case "B"
        Target.Interior.ColorIndex = 6
        Case "C"
        Target.Interior.ColorIndex = 8
        Case "D"
      
      End Select
      End If
    End Sub
    EDIT:
    Möchtest Du zusätzlich haben, dass Target vollständig in D16:AV68 enthalten sein muss (also teilweise Überschneidungen ausgeschlossen sein sollten), müsstest Du nach der IF-Anweisung noch eine zusätzliche Abfrage einfügen:
    entweder:
    Code:
    IF Bereich.Address <> Target.Address THEN EXIT SUB
    SELECT...
    ...
    END SELECT
    ...
    oder:
    Code:
    IF Bereich.Address = Target.Address THEN
      SELECT ...
      ...
      END SELECT
    END IF
    Es muss zu diesem Zweck "...Address" herangezogen werden, denn ein bloßer Vergleich von "Bereich" und "Target" (zB: IF Bereich=Target THEN...) scheitert, weil VBA hinter Bereich und Target automatisch die Standardeigenschaft (nämlich Bereich.VALUE und Target.VALUE) einsetzen würde.
     
    Exl121150, 11. Juli 2011
    #5
  6. Hajo_Zi
    Hajo_Zi Erfahrener User
    Hallo Anton,

    da hast Du dann einen entscheiden Vorteil des Makro entfernt. Es können nicht mehr mehrere Zellen mit einmal geändert werden und im Original Code war der Teil mit Nothing schon drin.

    ich werde das Problem auch nicht vertiefen. Da halte ich mich an ein Zitat von meiner Homepage.
    Gruß Hajo
     
    Hajo_Zi, 11. Juli 2011
    #6
  7. Exl121150 Erfahrener User
    Hallo!

    @Hajo_Zi:
    Da ich nicht wirklich weiß, was präzise Nadsat haben möchte und er die wesentliche Abfrage auf NOTHING entfernt hat, habe ich sie wieder eingefügt, da er offenbar doch die Einschränkung auf D16:AV68 haben möchte.

    Die Funktion INTERSECT liefert als Ergebnis die Schnittmenge von TARGET und D16:AV68. Ist Target in D16:AV68 zur Gänze enthalten (auch wenn Target aus mehreren Zellen besteht), liefert Intersect wieder TARGET zurück. Somit ist in diesem Fall BEREICH und TARGET identisch.
    Überschneidet jedoch TARGET den Bereich D16:AV68 nach außen hin, bedeutet das, dass der von INTERSECT zurückgelieferte Restberich (=BEREICH), der sich noch innerhalb von D16:AV68 befindet, kleiner sein muss als TARGET und sich somit BEREICH und TARGET im ADDRESS unterscheiden.
    Es ist halt eine Frage, ob Nadsat diese vorgenannte Funktionalität haben möchte.
     
    Exl121150, 11. Juli 2011
    #7
  8. Hajo_Zi
    Hajo_Zi Erfahrener User

    VBA Zellen definiert färben

    Hallo Anton,

    es ist aber so das in Deinem Code mehrere Zellen in dem Bereich zu einem Fehler führt. Es ist ja möglich mehrere Zellen mit einmal zu ändern.

    Gruß Hajo
     
    Hajo_Zi, 11. Juli 2011
    #8
  9. schatzi Super-Moderator
    Hallo!
    Diese Aussage ist weder hilfreich noch zielführend noch rechtsrelevant/rechtsverbindlich...

    Weder kannst du rechtlich nachweisen, dass diese Codes auf deinem "Mist" gewachsen sind, noch besitzen sie eine ausreichende Schöpfungshöhe, um überhaupt darauf ein Urheberrecht beanspruchen zu können.
    Da helfen dir auch keine Copyright-Hinweise o.ä.

    Ich akzeptiere dein Recht, dies als Abschreckung zu nutzen, aber in einem Hilfe-Forum ist dies mehr als fehl am Platz!!!
    (Insbesondere dann, wenn du diese Codes auf deiner eigenen HP frei zugänglich und frei downloadbar machst...)
     
    schatzi, 11. Juli 2011
    #9
  10. Hey Anton,

    dank dir für den Hinweis. Die Matrix arbeitet nun so wie sie sollte.
     
    Nadsat1984, 12. Juli 2011
    #10
  11. Hajo_Zi
    Hajo_Zi Erfahrener User
    ich wollte mich eines Kommentars zu dem Beitrag des Moderators eigentlich enthalten.
    Aber wer Null Ahnung von VBA hat sollte keine Meinung dazu schreiben. Ich werde diese Disskussdion auch nicht weiter führen.

    Gruß Hajo
     
    Hajo_Zi, 12. Juli 2011
    #11
  12. schatzi Super-Moderator
    Hallo!
    Das wäre auch besser gewesen, denn hier geht es nicht um VBA-Kenntnisse, sondern um Kenntnisse zum Thema "Urheberrecht"!
     
    schatzi, 13. Juli 2011
    #12
Thema:

VBA Zellen definiert färben

Die Seite wird geladen...
  1. VBA Zellen definiert färben - Similar Threads - VBA Zellen definiert

  2. Zelle per VBA auf ihren Inhalt prüfen und reagieren sowie bei Änderung

    in Microsoft Excel Hilfe
    Zelle per VBA auf ihren Inhalt prüfen und reagieren sowie bei Änderung: Hallo zusammen, ich habe mit etwas verheddert und hoffe auf Eure Hilfe. Die Felder B111 und B112 sind zu Beginn LEER. B111 bietet ein Dropdown-Menü an, welches im Falle der Auswahl "Angebot mit...
  3. zeilenweise Zellen per VBA verbinden

    in Microsoft Excel Hilfe
    zeilenweise Zellen per VBA verbinden: Guten Morgen zusammen, ich möchte beginnend ab der Zeile/Zelle A29 den Bereich A29:E29 per MERGE verbinden sowie jeweils zeilenweise eine individuelle Anzahl an Zeilen im jeweils gleichen Bereich...
  4. Zellen aus Aktiver Zeile kopieren

    in Microsoft Excel Hilfe
    Zellen aus Aktiver Zeile kopieren: Hallo zusammen, im Grunde genommen ist es wohl ganz einfach … ich weiss es aber trotzdem nicht wie es in VBA umsetze. Ich will aus einer „Aktiven Reihe“ (diese wähle ich vorher über einen...
  5. VBA Zahlen als Währung einfügen

    in Microsoft Excel Hilfe
    VBA Zahlen als Währung einfügen: Hallo Zusammen, brauche eure Hilfe Habe eine Datei im Anhang, habe ein wenig schon angefangen mit VBA weiss leider nicht mehr weiter. Ich möchte das wenn ich auf einfügen drücke das die werte...
  6. Textteile aus Zelle mit mehreren Absätzen

    in Microsoft Excel Hilfe
    Textteile aus Zelle mit mehreren Absätzen: Hallo, ich habe folgendes Problem: Ich habe in einer Liste in einer Zelle mehrere Angaben aus denen ich Textteile (z.B. alles was in () oder {} ist) herausziehen will, um damit weiter zurechnen....
  7. Summieren farbiger Zahlen anhand des Farbcodes ohne VBA

    in Microsoft Excel Hilfe
    Summieren farbiger Zahlen anhand des Farbcodes ohne VBA: Hallo liebes Forum, welche Formel muss ich eingeben, wenn ich farbige Ziffern (z.B. rot = Farbcode 3; grün = 4) addieren möchte. Danke im voraus für die schnelle Antwort Gruß mfkathie
  8. Merge von Zellen im exakt definierten Bereich

    in Microsoft Excel Hilfe
    Merge von Zellen im exakt definierten Bereich: Hallo zusammen. Ich habe eine riesige Tabelle (hier bloss ein Ausschnitt), bei der ich zu Visualisierungszwecken, Zellen im ausgewaehlten Bereich (mit gleichem Inhalt je Reihe) verbinden...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden