Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
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

Harte Nuss: ZeilenMarkierung

Harte Nuss: ZeilenMarkierung
19.06.2013 15:52:35
Stefan
Hallo zusammen
ich habe den exzellenten Code von Hajo verwendet, um dynamisch jene Zeile, welche die derzeit aktive Zelle enthält, grün zu färben. Das ist super um die Übersicht zu erhöhen. Jedoch fehlt mir ein Komfortfeature: die Markierung ist beim derzeitigen Code immer alle Zeilen aktiviert. Ist es möglich, dass erst ab Reihe 9 grün markiert wird, jedoch nicht von 1-8?
Es geht um den folgenden Code:
Option Explicit ' Variablendefinition erforderlich
Option Private Module ' damit Makros nicht sichtbar
'**************************************************
'* H. Ziplies *
'* 15.01.11 *
'* erstellt von HajoZiplies@web.de *
'* http://Hajo-Excel.de/ *
'**************************************************
Public BoZustand As Boolean ' Zustand der Markierung
Public StName As String ' CodeName der Tabelle
Public StWert() As String ' Zelladresse
Public RaZeile As Range ' Zeilenbereich
Public InI As Integer ' Schleifenvariable
Const LoFarbe As Long = 65280 ' Farbe Markierung
Sub zurueck()
Dim StKlarname As String                        ' Klarname der Tabelle
On Error Resume Next
If IsError(LBound(StWert())) Then
ReDim Preserve StWert(0 To 1, 0 To 0)       ' Array Definieren
End If
If StName = "" Then Exit 

Sub                    ' es sind keine Werte vorhanden
Dim WsTabelle As Worksheet                      ' Klarname der Tabelle feststellen
For Each WsTabelle In ThisWorkbook.Worksheets   ' Schleife über alle Tabellen
If WsTabelle.CodeName = StName Then         ' Namen mit abgespeicherten vergleichen
StKlarname = WsTabelle.Name             ' Namen auf Register auslesen
Exit For                                ' Schleife verlassen
End If
Next WsTabelle
If StKlarname  "" Then                        ' Tabellename vorhanden
'Farbe zurueckstellen
If Not RaZeile Is Nothing Then
With ThisWorkbook.Worksheets(StKlarname)
'.Unprotect
For InI = 0 To UBound(StWert, 2)
' es gibt auch leere Variablen da Grundlage Fadenkreuz
If StWert(InI, 0)  "" Then
If StWert(1, InI)  "" Then
With .Range(StWert(1, InI)).Interior
If .Color = LoFarbe Then
If StWert(0, InI) = 16777215 Then
Dim LoPattern As Long
Dim LoMuster As Long
If .Pattern = -4142 Or .Pattern = 1 Then
.ColorIndex = xlNone
Else
LoPattern = .PatternColor
LoMuster = .Pattern
.ColorIndex = xlNone
.PatternColor = LoPattern
.Pattern = LoMuster
End If
Else
.Color = StWert(0, InI)
End If
End If
End With
End If
End If
Next InI
'.Protect
End With
End If
End If
End Sub

Sub Auslesen()
Dim RaZelle As Range
Dim StSichtbar_range As String                  ' Sichtbarer Bereich Fixierung unten rechts
Dim LoLetzte As Long                            ' Letzte Zeile Bildschirm
Dim StLinks As String                           ' linke Begrenzung Bildschirm bei Fixierung
Dim StRechts As String                          ' rechte Begrenzung Bildschirm
Dim StZelle As String                           ' Variable das in erster Zeile eine Zelle  _
nicht 2 mal ausgelesen wird
Erase StWert()                                  ' Array löschen
StName = ActiveSheet.CodeName                   ' CodeName der Tabelle
' Bestimmt den Fadenkreuz-Bereich, der durch die aktive Zelle definiert wird.
' Anschließend wird der Bereich beschnitten, um nur die zellen des Zeile
' zu behalten, die derzeit sichtbar sind
Set RaZeile = Intersect(Union(ActiveCell.EntireRow, ActiveCell.EntireColumn), _
ActiveWindow.ActivePane.VisibleRange)
' Tabelle fixiert Zellen im restlichen Bereich feststellen
If ActiveWindow.FreezePanes Then        ' Tabelle ist fixiert
' Der Code zur Ermttlung der Zeile oder Spalten
' wurde von André (Schauan) erstellt
StSichtbar_range = ActiveWindow.ActivePane.VisibleRange.Address(True, False)
' Ansatz von Uwe Küstner ohne Vergleich
' Spalte
' Überprüfung ob Spalte fixiert
If ActiveWindow.SplitColumn  0 Then
Set RaZeile = Range(Cells(ActiveCell.Row, 1), _
Cells(ActiveCell.Row, ActiveWindow.SplitColumn))
ElseIf ActiveWindow.SplitRow  0 Then  ' Überprüfung ob Zeile fixiert
Set RaZeile = Range(Left(StSichtbar_range, InStr(StSichtbar_range, "$")) & 1 & Mid( _
StSichtbar_range, InStr(StSichtbar_range, ":")))
End If
End If
InI = 0
'ActiveSheet.Unprotect
For Each RaZelle In RaZeile
With RaZelle
' nur Zellen der aktiven Zeile
If InStr(StZelle, RaZelle.Address) = 0 Then
If RaZelle.Row = ActiveCell.Row Then
InI = InI + 1
ReDim Preserve StWert(0 To 1, 0 To InI - 1)
StWert(0, InI - 1) = RaZelle.Interior.Color
StWert(1, InI - 1) = RaZelle.Address
StZelle = StZelle & RaZelle.Address
.Interior.Color = LoFarbe
End If
End If
End With
Next RaZelle
'ActiveSheet.Protect
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
If Target.Row > 9 Then
19.06.2013 16:04:44
Matthias
Hallo
Ich würde es z.B. so markieren (es ging ja nur ums markieren)
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 9 Then
Cells.Interior.ColorIndex = -4142
Rows(Target.Row).Interior.ColorIndex = 4
Target.Interior.ColorIndex = 9
End If
End Sub
Gruß Matthias

AW: Harte Nuss: ZeilenMarkierung
19.06.2013 16:06:09
Rudi
Hallo,
ich denke so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
zurueck
If Target.Row > 8 Then Auslesen
End Sub

Gruß
Rudi

Anzeige
AW: Harte Nuss: ZeilenMarkierung
19.06.2013 16:24:48
Stefan
Wow, danke euch beiden, das funktioniert perfekt :). Ich bin immer wieder erstaunt über die geballte Kompetenz, welche hier vertreten ist.
Jetzt bin ich fast wunschlos glücklich. Aber ein i-Tüpfelchen gäb's noch: besteht noch die Möglichkeit, die Markierung so einzugrenzen, dass sie nur von Spalte C bis N aktiv ist?

von "C" bis "N" färben
19.06.2013 17:48:59
"C"
Hallo
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Row > 8 And Target.Column > 2 And Target.Column 
Gruß Matthias

AW: von "C" bis "N" färben
24.06.2013 11:24:14
"C"
Danke Matthias. Dein Code hat mir schon weiter geholfen, jedoch habe ich scheinbar eine andere Version.
In meinem Fall lautet der Code:
StSichtbar_range = ActiveWindow.ActivePane.VisibleRange.Address(True, False)
Set RaZeile = Range(Left("B", InStr(StSichtbar_range, "$")) & 1 & Mid(StSichtbar_range, InStr(StSichtbar_range, ":"))
Die Begrenzung der Markierung links ist einfach anzugeben ("B"), aber wie begrenze ich die Markierung rechts?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige