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

Forumthread: aktive Zeile farbig zur Orientierung

aktive Zeile farbig zur Orientierung
22.05.2006 13:53:52
Thomas
Hallo Zusammen,
ich habe folgenden Code für die farbliche Darstellung der aktiven Zeile sodass man auf einen Blick sieht in welcher Zeile man arbeitet.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rw As Long, Venue As String
If Target.Cells.Count > 1 Then Exit Sub
Rw = ActiveCell.Row
Venue = Cells(Rw, 4)
If Rw > 1 And Rw < 1000 Then
Cells.Interior.ColorIndex = xlNone
Range(Cells(Rw, 1), Cells(Rw, 13)).Interior.ColorIndex = 35
End If
End Sub

Kann mit hier jemand eine Erweiterung des Codes nennen, der bestehende Markierungen nicht entfernt? Also für die bessere Darstellungen sind Spalten und Zellen farbig markiert, diese sollten dann auch in der bestehenden Farbe so bleiben...
Der o. g. Code entfernt ja die Farbe wieder und dies gilt leider auch für bestehende Farben...
Kann mir das jemand entsprechend abändern?
Danke an alle Helfenden...
MfG aus dem grauen Berlin
Thomas R.
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aktive Zeile farbig zur Orientierung
22.05.2006 14:40:48
Reinhard
Hi Thomas,
leichter Bug, Zeile 1 bleibt immer markiert, deshalb Frage noch offen. Um Einzelzellen färben zu können das makro Aus, danach das Makro Ein.
in Modul1:
Option Explicit
Public Merker(13) As Integer, pos As String
Sub Ein()
Application.EnableEvents = False
End Sub
Sub Aus()
Application.EnableEvents = True
End Sub
In DieseArbeitsmappe:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sp
For sp = 1 To 13
Cells(ActiveCell.Row, sp).Interior.ColorIndex = Merker(sp)
Next sp
End Sub
Private Sub Workbook_Open()
Dim sp As Integer
pos = "A1"
Worksheets("Tabelle1").Range("A1").Select
For sp = 1 To 13
Merker(sp) = Cells(1, sp).Interior.ColorIndex
Next sp
End Sub
in Tabelle1:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim sp As Integer
If Target.Cells.Count > 1 Then Exit Sub
If Target.Row < 2 And Target.Row > 999 Then Exit Sub
For sp = 1 To 13
Cells(Range(pos).Row, sp).Interior.ColorIndex = Merker(sp)
Merker(sp) = Cells(Target.Row, sp).Interior.ColorIndex
Next sp
Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 13)).Interior.ColorIndex = 35
pos = Target.Address(0, 0)
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
Danke.
22.05.2006 16:23:22
Thomas
Danke Reinhard,
nach kleinen spezifischen Modifikationen funktioniert es bestens...
@dan
Die Variante mit den Linien klingt auch interessant, werd ich mal probieren...
Danke.
AW: aktive Zeile farbig zur Orientierung
22.05.2006 15:58:16
dan
Hallo Thomas,
die Idee die active Zeile zu markieren ist interessant. Weil man aber dabei Probleme mit der bestehenden Formatierung bekommt, habe ich es anders gemacht. Die active-cell wird mit linien markiert, etwa so sieht es jetzt aus: (code kommt in ThisWorkbook-Module)
Option Explicit
' Function AddLine(BeginX As Single, BeginY As Single, EndX As Single, EndY As Single) As Shape
Private m_VerticalLine As Shape
Private m_HorizontalLine As Shape

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteLines
End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Call DeleteLines
Call MarkActiveCell(Sh)
End Sub


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Call DeleteLines
Call MarkActiveCell(Sh)
End Sub


Private Sub DeleteLines()
If (Not m_VerticalLine Is Nothing) Then m_VerticalLine.Delete
If (Not m_HorizontalLine Is Nothing) Then m_HorizontalLine.Delete
End Sub


Private Sub MarkActiveCell(ByVal Sh As Object)
If (Not ActiveCell Is Nothing) Then
Set m_VerticalLine = Sh.Shapes.AddLine(ActiveCell.Left + ActiveCell.Width, Application.ActiveWindow.Top, _
ActiveCell.Left + ActiveCell.Width, Application.ActiveWindow.Top + Application.ActiveWindow.Height)
Set m_HorizontalLine = Sh.Shapes.AddLine(0, ActiveCell.Top + ActiveCell.Height, _
Application.ActiveWindow.Width, ActiveCell.Top + ActiveCell.Height)
End If
End Sub

Die linien kann man noch formatieren, z.B staerker machen, rot oder blau usw. Gruss Dan, cz.
(Und der Code habe ich nicht besonders getestet, es ist eher ein Vorschlag)
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Aktive Zeile farbig zur Orientierung in Excel


Schritt-für-Schritt-Anleitung

Um die aktive Zeile in Excel farbig zu markieren, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass die Zeile, in der Du arbeitest, hervorgehoben wird. Gehe wie folgt vor:

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Doppelklicke auf das Arbeitsblatt, in dem Du die aktive Zeile markieren möchtest (z.B. „Tabelle1“).

  3. Füge den folgenden Code in das Codefenster ein:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Dim Rw As Long
       Rw = ActiveCell.Row
       If Rw > 1 And Rw < 1000 Then
           Cells.Interior.ColorIndex = xlNone
           Range(Cells(Rw, 1), Cells(Rw, 13)).Interior.ColorIndex = 35
       End If
    End Sub
  4. Schließe den VBA-Editor und teste den Code, indem Du verschiedene Zeilen in Deinem Arbeitsblatt auswählst.


Häufige Fehler und Lösungen

  • Problem: Die aktive Zeile wird nicht farbig hervorgehoben.

    • Lösung: Stelle sicher, dass der Code im richtigen Arbeitsblatt-Modul eingefügt wurde und dass die Makros aktiviert sind.
  • Problem: Bestehende Farben in anderen Zellen werden entfernt.

    • Lösung: Verwende den erweiterten Code von Reinhard, der bestehende Farben beibehält:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Dim sp As Integer
       If Target.Cells.Count > 1 Then Exit Sub
       For sp = 1 To 13
           Cells(ActiveCell.Row, sp).Interior.ColorIndex = Merker(sp)
           Merker(sp) = Cells(Target.Row, sp).Interior.ColorIndex
       Next sp
       Range(Cells(ActiveCell.Row, 1), Cells(ActiveCell.Row, 13)).Interior.ColorIndex = 35
    End Sub

Alternative Methoden

Eine weitere Möglichkeit zur Markierung der aktiven Zeile ist die Verwendung von Linien, anstatt die Zellen farbig zu markieren. Dan hat einen Vorschlag präsentiert, der Linien um die aktive Zelle zeichnet. Hier ist der Code, den Du in das ThisWorkbook-Modul einfügen solltest:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Call DeleteLines
    Call MarkActiveCell(Sh)
End Sub

Private Sub DeleteLines()
    If (Not m_VerticalLine Is Nothing) Then m_VerticalLine.Delete
    If (Not m_HorizontalLine Is Nothing) Then m_HorizontalLine.Delete
End Sub

Private Sub MarkActiveCell(ByVal Sh As Object)
    If (Not ActiveCell Is Nothing) Then
        Set m_VerticalLine = Sh.Shapes.AddLine(ActiveCell.Left + ActiveCell.Width, Application.ActiveWindow.Top, _
        ActiveCell.Left + ActiveCell.Width, Application.ActiveWindow.Top + Application.ActiveWindow.Height)
        Set m_HorizontalLine = Sh.Shapes.AddLine(0, ActiveCell.Top + ActiveCell.Height, _
        Application.ActiveWindow.Width, ActiveCell.Top + ActiveCell.Height)
    End If
End Sub

Praktische Beispiele

  1. Farben anpassen: Ändere die ColorIndex-Werte, um unterschiedliche Farben für die aktive Zeile auszuwählen. Zum Beispiel, um die Zeile grün zu markieren, setze ColorIndex = 4.

  2. Zeilenbereich erweitern: Um mehr als 13 Spalten zu markieren, passe den Range-Befehl an, z.B. Range(Cells(Rw, 1), Cells(Rw, 20)).

  3. Linien formatieren: Du kannst die Linien, die um die aktive Zelle gezeichnet werden, in der Farbe oder Stärke anpassen, indem Du die Eigenschaften der Shape-Objekte veränderst.


Tipps für Profis

  • Nutze die Funktion Application.EnableEvents, um das Makro zu steuern und um Probleme beim Markieren zu vermeiden.
  • Teste Deinen Code regelmäßig, um sicherzustellen, dass es keine unerwarteten Wechselwirkungen mit anderen Makros gibt.
  • Dokumentiere Deinen Code mit Kommentaren, um die Wartung und Anpassung zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die aktive Zeile farbig markieren, ohne andere Formatierungen zu verlieren? Du kannst den erweiterten Code von Reinhard verwenden, der die bestehenden Farben beibehält.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code funktioniert in den meisten modernen Excel-Versionen, die VBA unterstützen.

3. Kann ich mehrere Zeilen gleichzeitig markieren? Der aktuelle Code funktioniert nur für eine aktive Zeile. Du müsstest den Code anpassen, um mehrere Zeilen zu markieren.

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