Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: vba per Klick Zeile in Bereich färben

vba per Klick Zeile in Bereich färben
06.11.2017 22:47:35
bassi
Hallo Zusammen,
ich bräuchte Eure Hilfe.
Ich möchte in einem Bereich eine Zelle anklicken und es soll die gesamte Spalte des Bereichs eingefärbt werden.
Ich habe mir folgenden Code aus den weiten des Inet gezogen und soweit zurecht gestrickt das es schon fast richtig funktioniert...
Allerdings möchte ich, dass nur bei Klick in dem Bereich A8 bis S1000 und auch nur genau in diesem Bereich sich etwas ändern soll.

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'bereich der "normalisiert" wird
With Range("A8:S1000")
.Interior.ColorIndex = xlAutomatic
End With
'bereich der farblich angezeigt wird
With Target
Range(Cells(.Row, 1), Cells(.Row, 19)).Interior.ColorIndex = 6
End With
End Sub

Könnte hier vielleicht mal einer drüber schauen?
Viele Grüße
bassi
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba per Klick Zeile in Bereich färben
06.11.2017 23:18:52
Ralf
...dann solltest Du auch diesen Bereich nehmen....:)
also, die Spalte, in der sich der Cursor befindet? Von Zeile 8 bis 1000?

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range, isec As Range
Set rng = Range("A8:S1000")
Set isec = Intersect(Target, rng)
If Not isec Is Nothing Then
rng.Interior.ColorIndex = xlAutomatic
Range(Cells(8, Target.Column), Cells(1000, Target.Column)).Interior.ColorIndex = 6
Set isec = Nothing
End If
Set rng = Nothing
End Sub

Anzeige
AW: vba per Klick Zeile in Bereich färben
06.11.2017 23:32:20
bassi
Guten Abend Ralf,
vielen Dank für die schnelle Antwort.
Im Grunde funktioniert das genau richtig.
Nur eben verkehrt herum.
Es werden jetzt die Spalten (ist vertikal - also die Buchstaben die Spalte?) statt wie gewünscht die Zeilen (also horizontal - die Zahlen) eingefärbt.
Hab auch mal versucht das umzudrehen - aber da bin ich wohl zu doof für - geht natürlich nicht :-(
Würdest Du nochmal Hand anlegen?
Viele Grüße
bassi
Anzeige
AW: vba per Klick Zeile in Bereich färben
06.11.2017 23:47:22
Ralf
...Zeilen narkieren, statt spalten....
dann statt dem:
Range(Cells(8, Target.Column), Cells(1000, Target.Column)).Interior.ColorIndex = 6
so rum:
Range(Cells(target.row, 1), Cells(target.row, "S")).Interior.ColorIndex = 6

Anzeige
AW: vba per Klick Zeile in Bereich färben
06.11.2017 23:56:02
bassi
also manchmal steige ich einfach nicht dahinter... *ankopfklatsch*
letztes "Problem" mit der Färbung funktioniert nun auf einmal von selbst.
Die Farbe die dort stand kommt auch wieder zurück...
Also alles gut.
Das Einfärben der Zeilen klappt nun auch tadellos.
Vielen herzlichen Dank.
Ich wünsche eine angenehme Nachtruhe :-)
Viele Grüße
bassi
Anzeige
AW: vba per Klick Zeile in Bereich färben
06.11.2017 23:51:14
bassi
Ei verflixt ich sehe gerade noch ein Problem.
Das zurück stellen der Farbe - ginge das, dass der Code erkennt welche Farbe da vorher war und diese auch wieder einstellt?
Oder vielleicht einfacher - wenn in Spalte S ein Text steht - dann soll die Textfarbe der ganzen Zeile Grau sein.
Ist das vielleicht machbar?
Viele Grüße
bassi
Anzeige
AW: vba per Klick Zeile in Bereich färben
07.11.2017 00:02:09
Ralf
...isses... aber das war dann das letzte Mal für heute....;)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rng As Range, isec As Range
Set rng = Range("A8:S1000")
Set isec = Intersect(Target, rng)
If Not isec Is Nothing Then
rng.Interior.ColorIndex = xlNone
rng.Font.Color = RGB(0, 0, 0)
'    Range(Cells(8, Target.Column), Cells(1000, Target.Column)).Interior.ColorIndex = 6
With Range(Cells(Target.Row, 1), Cells(Target.Row, "S"))
.Interior.ColorIndex = 6
If Cells(Target.Row, "s")  "" Then .Font.Color = RGB(150, 150, 150)
End With
Set isec = Nothing
End If
Set rng = Nothing
End Sub

Anzeige
Perfekt - Vielen vielen Dank :-)
07.11.2017 00:15:52
bassi
ich danke vielmals für die Hilfe zu so später Stunde :-)
gut Nacht
bassi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Zeilen in Excel-Bereich per Klick färben mit VBA


Schritt-für-Schritt-Anleitung

Um die Zeilen in einem bestimmten Excel-Bereich per Klick zu färben, kannst Du folgenden VBA-Code verwenden. Dieser Code sollte im Code-Editor des Arbeitsblatts eingefügt werden:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  2. Doppelklicke auf das entsprechende Arbeitsblatt im Projekt-Explorer (links).
  3. Füge den folgenden Code in das Codefenster ein:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rng As Range, isec As Range
    Set rng = Range("A8:S1000")
    Set isec = Intersect(Target, rng)
    If Not isec Is Nothing Then
        rng.Interior.ColorIndex = xlNone
        rng.Font.Color = RGB(0, 0, 0)
        With Range(Cells(Target.Row, 1), Cells(Target.Row, "S"))
            .Interior.ColorIndex = 6
            If Cells(Target.Row, "S") <> "" Then .Font.Color = RGB(150, 150, 150)
        End With
        Set isec = Nothing
    End If
    Set rng = Nothing
End Sub
  1. Schließe den VBA-Editor und teste den Code, indem Du auf verschiedene Zellen im Bereich A8 bis S1000 klickst.

Häufige Fehler und Lösungen

  • Problem: Der gesamte Bereich wird nicht zurückgesetzt.

    • Lösung: Stelle sicher, dass Du rng.Interior.ColorIndex = xlNone vor der Färbung der Zeile aufrufst.
  • Problem: Die Zeilen werden nicht korrekt eingefärbt.

    • Lösung: Überprüfe, ob der Code im richtigen Arbeitsblatt eingefügt wurde und dass der Bereich A8:S1000 korrekt definiert ist.
  • Problem: Die Schriftfarbe wird nicht geändert.

    • Lösung: Achte darauf, dass die Bedingung für die Schriftfarbe (in Spalte S) korrekt formuliert ist.

Alternative Methoden

Wenn Du die Zeilen nicht per Klick, sondern über eine Schaltfläche oder ein Makro färben möchtest, kannst Du das folgende Makro verwenden:

Sub FärbeZeile()
    Dim TargetRow As Long
    TargetRow = ActiveCell.Row
    With Range(Cells(TargetRow, 1), Cells(TargetRow, "S"))
        .Interior.ColorIndex = 6
    End With
End Sub

Du kannst dieses Makro dann einer Schaltfläche zuweisen, um es einfacher auszuführen.


Praktische Beispiele

  1. Zeile einfärben: Wenn Du auf Zelle A10 klickst, wird die gesamte Zeile 10 bis Spalte S in Gelb eingefärbt.
  2. Farbe zurücksetzen: Bei einem Klick auf eine andere Zeile wird die vorherige Zeile zurückgesetzt und die neue Zeile eingefärbt.

Tipps für Profis

  • Dynamische Bereiche: Du kannst den Bereich dynamisch anpassen, indem Du die letzte Zeile ermittelst, die Daten enthält, anstatt einen festen Bereich zu verwenden.
  • Farbpalette: Experimentiere mit verschiedenen ColorIndex-Werten oder RGB-Farben, um ansprechende Designs zu erstellen.
  • Bedingte Formatierung: Überlege, die bedingte Formatierung als Alternative zu VBA zu verwenden, falls Du keine Programmierung nutzen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich die Färbung auf einen anderen Bereich anwenden?
Ändere einfach die Range in Set rng = Range("A8:S1000") entsprechend Deinem gewünschten Bereich.

2. Funktioniert dieser Code in Excel 2016?
Ja, dieser VBA-Code ist mit Excel 2016 und neueren Versionen kompatibel. Achte darauf, die Makros zu aktivieren.

3. Kann ich die Farbe der Zeile ändern?
Ja, ändere den ColorIndex-Wert in .Interior.ColorIndex = 6 zu einem anderen Wert, um die Farbe zu ändern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige