Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Farben und Muster zuweisen

Farben und Muster zuweisen
04.04.2005 20:48:27
Tinu
Liebe VBA Spezialisten
Ich habe mir mit meinen bescheidenen VBA-Kenntnissen ein Excel-Sheet gebastelt, welches 8 verschiedene Farben und Muster zuweisen kann. Es klappt auch alles bestens, bis ich mehrere Zellen gleichzeitig verändere (z.B: mehrere Felder löschen, Felder "ziehen"). Dann stürzt das Programm ab.
https://www.herber.de/bbs/user/20690.xls
Was muss ich ändern?
besten Dank für Euere Hilfe
Tinu
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farben und Muster zuweisen
04.04.2005 23:52:38
Uduuh
Hallo,
schon sehr schön. Vermeide diese If..If..If Konstruktionen. Select Case ist erheblich besser und übersichtlicher.
Der Fehler liegt darin, dass beim Ziehen und Mehrfachmarkierungen Target mehrere Zellen umfasst. Die musst du einzeln abfragen. Weiterhin verursacht dein Makro Änderungen, die wiederum das Makro auslösen. Also erstmal die Ereignisse abschalten.

Private Sub Worksheet_change(ByVal Target As Excel.Range)
Dim EBereich As Range, rngC As Range
Set EBereich = Range("A1:H50")
If Intersect(Target, EBereich) Is Nothing Then Exit Sub
On Error GoTo ErrHandler
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
For Each rngC In Target.Cells
With rngC
Select Case c.Value
Case ""
.Interior.ColorIndex = 0
.Interior.Pattern = 0
.Interior.PatternColorIndex = 41
Case 0.1
.Interior.ColorIndex = 0
.Interior.Pattern = xlGray16
.Interior.PatternColorIndex = 41
Case 0.25
.Interior.ColorIndex = 0
.Interior.Pattern = xlLightUp
.Interior.PatternColorIndex = 41
Case 0.5
.Interior.ColorIndex = 0
.Interior.Pattern = xlUp
.Interior.PatternColorIndex = 41
Case 0.75
.Interior.ColorIndex = 0
.Interior.Pattern = xlChecker
.Interior.PatternColorIndex = 41
Case 0.9
.Interior.ColorIndex = 0
.Interior.Pattern = xlSemiGray75
.Interior.PatternColorIndex = 41
Case 1
.Interior.ColorIndex = 41
.Interior.Pattern = xlSolid
Case 2
.Interior.ColorIndex = 22
.Interior.Pattern = xlSolid
Case 3
.Interior.ColorIndex = 3
.Interior.Pattern = xlSolid
End Select
End With
Next rngC
ErrHandler:
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub

Gruß aus'm Pott
Udo

Anzeige
AW: Farben und Muster zuweisen
05.04.2005 00:24:32
Tinu
Hallo Udo
besten Dank für Deine Antwort. Scheinbar mache ich aber noch etwas falsch. Ich habe Deinen Code in mein Worksheet hineinkopiert, aber es tut sich nichts, wenn ich Daten eingebe. Die Zahlen erscheinen zwar, aber keine Farben oder Muster.
Gruss
Tinu
AW: Farben und Muster zuweisen
05.04.2005 08:36:44
u_
Hallo,
kleiner aber verheerender Fehler.
Korrigiere:
Select Case rngC.Value
Gruß
Anzeige
AW: Farben und Muster zuweisen
05.04.2005 09:32:56
Tinu
Super Udo! Jetzt läuft alles wie gewünscht. Nochmals herzlichen Dank!
Gruss
Tinu
;
Anzeige
Anzeige

Infobox / Tutorial

Farben und Muster in Excel zuweisen


Schritt-für-Schritt-Anleitung

Um in Excel Farben und Muster zuzuweisen, kannst du VBA verwenden. Folge diesen Schritten:

  1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf „VBAProject (DeinArbeitsblattName)“ klickst und „Einfügen“ > „Modul“ wählst.

  3. Füge folgenden Code in das Modul ein:

    Private Sub Worksheet_change(ByVal Target As Excel.Range)
       Dim EBereich As Range, rngC As Range
       Set EBereich = Range("A1:H50")
       If Intersect(Target, EBereich) Is Nothing Then Exit Sub
       On Error GoTo ErrHandler
       With Application
           .EnableEvents = False
           .ScreenUpdating = False
       End With
       For Each rngC In Target.Cells
           With rngC
               Select Case rngC.Value
                   Case ""
                       .Interior.ColorIndex = 0
                       .Interior.Pattern = 0
                       .Interior.PatternColorIndex = 41
                   Case 0.1
                       .Interior.ColorIndex = 0
                       .Interior.Pattern = xlGray16
                       .Interior.PatternColorIndex = 41
                   ' Weitere Cases hier hinzufügen...
                   Case 1
                       .Interior.ColorIndex = 41
                       .Interior.Pattern = xlSolid
                   Case 2
                       .Interior.ColorIndex = 22
                       .Interior.Pattern = xlSolid
                   Case 3
                       .Interior.ColorIndex = 3
                       .Interior.Pattern = xlSolid
               End Select
           End With
       Next rngC
    ErrHandler:
       With Application
           .EnableEvents = True
           .ScreenUpdating = True
       End With
    End Sub
  4. Schließe den VBA-Editor und kehre zu deinem Arbeitsblatt zurück.

  5. Gib die Werte in die Zellen A1:H50 ein und beobachte, wie die Farben und Muster automatisch zugewiesen werden.


Häufige Fehler und Lösungen

  • Problem: Es werden keine Farben oder Muster angezeigt.

    • Lösung: Stelle sicher, dass du rngC.Value anstelle von c.Value verwendest. Ein kleiner, aber entscheidender Fehler kann hier viel bewirken.
  • Problem: Excel stürzt ab, wenn mehrere Zellen gleichzeitig bearbeitet werden.

    • Lösung: Deaktiviere die Ereignisse im Code mit .EnableEvents = False und aktiviere sie wieder am Ende, um zu verhindern, dass das Makro erneut ausgelöst wird.

Alternative Methoden

Wenn du keine VBA-Programmierung nutzen möchtest, kannst du auch die bedingte Formatierung in Excel verwenden:

  1. Wähle die Zellen aus, die du formatieren möchtest.
  2. Gehe zu „Start“ > „Bedingte Formatierung“ > „Neue Regel“.
  3. Wähle „Formel zur Ermittlung der zu formatierenden Zellen verwenden“ und gib deine Bedingungen ein.
  4. Setze die gewünschten Farben und Muster in den Formatierungsoptionen.

Praktische Beispiele

Hier sind einige Beispiele für die Zuweisung von Farben und Mustern in Excel:

  • Muster und Farben: Du kannst verschiedene ColorIndex-Werte verwenden, um spezifische Farben zuzuweisen. Beispiel:

    .Interior.ColorIndex = 3 ' Rot
    .Interior.Pattern = xlSolid
  • Verschiedene Muster: Nutze die Pattern-Eigenschaft, um unterschiedliche Füllmuster anzuwenden, z.B. xlChecker oder xlUp.


Tipps für Profis

  • Verwende die Select Case-Anweisung anstelle von mehreren If..Then-Konstruktionen, um den Code lesbarer und effizienter zu gestalten.
  • Teste deinen Code regelmäßig, besonders nach Änderungen, um sicherzustellen, dass keine neuen Fehler eingeführt werden.
  • Nutze patterncolorindex für feinere Anpassungen der Farben in der Musterfüllung.

FAQ: Häufige Fragen

1. Wie kann ich die Farben in Excel ändern, ohne VBA zu verwenden?
Verwende die bedingte Formatierung, um Zellen basierend auf ihren Werten farblich zu gestalten.

2. Was ist der Unterschied zwischen Interior.ColorIndex und Interior.PatternColorIndex?
Interior.ColorIndex bestimmt die Hintergrundfarbe der Zelle, während Interior.PatternColorIndex die Farbe des Musters festlegt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige