Alle zwei Zeilen grau markieren, VBA makro

Bild

Betrifft: Alle zwei Zeilen grau markieren, VBA makro
von: karin
Geschrieben am: 11.11.2015 11:19:51

Guten Tag,
ich benötige in Makro, dass mir alle zwei Zellen die komplette Zeile grau hinterlegt.
Mit der bedingten Formatierung
=REST(ZEILE();2)=0
hat das super funktioniert. Allerdings ist der Bereich variabel, betroffen sind zwar immer die Spalten A:H, aber die Zeilen sind unterschiedlich lang.
Das Makro sollte quasi bis zur letzen Zeile alle zwei Zellen markieren.
Freue mich über jede Hilfe.
MFG
Karin

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Bernd
Geschrieben am: 11.11.2015 11:25:48
Hi,
was meinst Du mit "zur letzten Zeile alle zwei Zellen markieren"?
Jede Zelle mit Wert grau formatieren und nicht die ganze Zeile, oder wie?
mfg Bernd

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Bernd
Geschrieben am: 11.11.2015 11:28:17
Hi, wenn ja probiere es mit dieser Formel in der bedingten Formatierung:
=WENN(A1<>"";REST(ZEILE();2)=1;"")
mfg Bernd

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: karin
Geschrieben am: 11.11.2015 12:52:49
Sorry, die komplette Zeile von A:H sollte dann grau markiert werden.
Viele Grüße

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Daniel
Geschrieben am: 11.11.2015 13:14:12
Hi
das regelst du darüber, dass du die Spalten A-H markierst, wenn du die Bedingte Formatierung mit dieer Regel einrichtest.
Gruß Daniel

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Sepp
Geschrieben am: 11.11.2015 11:31:49
Hallo Karin,
das geht z. B. so.

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub jedeZweite()
Dim rng As Range
Dim lngR As Long

With Tabelle1
  Set rng = .Range("A2:H2")
  For lngR = 4 To Application.Max(4, .Cells(.Rows.Count, 1).End(xlUp).Row) Step 2
    Set rng = Union(rng, .Range(.Cells(lngR, 1), .Cells(lngR, 8)))
  Next
End With
rng.Interior.Color = RGB(225, 225, 225)

Set rng = Nothing
End Sub

Gruß Sepp


Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: karin
Geschrieben am: 11.11.2015 12:56:16
Vielen Dank!Es klappt, allerdings handelt es sich bei dem Datensatz den ich habe um gefilterte Werte. deshalb ist die Markierung logischerweise nicht gleichmäßig. Kann man da was machen? Viele Grüße

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Daniel
Geschrieben am: 11.11.2015 13:12:59
Hi
markiere mal den Bereich und formatiere ihn als Tabelle (Einfügen - Tabellen - Tabelle)
dann wird diese Tabelle standardmässig mit dieser Wechselfärbung formatiert.
diese bleibt dann auch beim Filtern erhalten.
Allerdings hat die Formatierung als Tabelle noch ein paar weitere Effekte.
die einfachste Methode die Wechselfärbung auch bei Filterungen aufrecht zu erhalten ist folgende:
1. füge eine Hilfsspalte ein.
2. in die erste Zeile der Hilfsspalte (Überschriftenzeile) kommt der Wert FALSCH (als Wahrheitswert)
3. in die erste Datenzeile (Zeile 2) der Hilfsspalte kommt dann folgende Formel (Hilfsspalte sei Spalte X):
=Wenn(Teilergebnis(3;A2)=0;X1;Nicht(X1))
4. verwende jetzt als Regel für die Bedingte Formatierung einfach: =$X1
das Prinzip ist folgendes:
die Formel in X prüft als erstest, ob die Zeile aus- oder eingeblendet ist.
ist sie ausgeblendet, wird einfach der Wert aus der Vorgängerzelle übernommen.
ist sie eingeblendet, wird der Vorgängerwert negiert, so dass bei den sichtbaren Zellen immer abwechselnd WAHR / FALSCH steht.
gruß Daniel

Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: Sepp
Geschrieben am: 11.11.2015 13:53:42
Hallo Karin,
wenn in deineer Liste auch berechnete Felder sind, dann geht das auch in einer gefilterten Liste.
In das Modul der entsprechenden Tabelle:

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Calculate()
Dim rng As Range, rngF As Range, rngC As Range

Set rngF = Range("A1").CurrentRegion
rngF.Interior.ColorIndex = xlNone
For Each rng In rngF.Columns(1).Cells
  If Application.Subtotal(3, Range(rngF.Cells(1, 1), rng)) Mod 2 = 0 Then
    If rngC Is Nothing Then
      Set rngC = rng.Resize(1, 8)
    Else
      Set rngC = Union(rngC, rng.Resize(1, 8))
    End If
  End If
Next

If Not rngC Is Nothing Then rngC.Interior.Color = RGB(225, 225, 225)

Set rng = Nothing
Set rngF = Nothing
Set rngC = Nothing
End Sub

Allerdings würde ich dazu die bedingte Formatierung verwenden ( http://www.excelformeln.de/tips.html?welcher=38 ), oder den Bereich als Tabelle formatieren, wie es Daniel schon vorgeschlagen hat.
Gruß Sepp


Bild

Betrifft: AW: Alle zwei Zeilen grau markieren, VBA makro
von: karin
Geschrieben am: 11.11.2015 14:29:42
Das klappt super, Dankeschön :)

Bild

Betrifft: Na, dann doch nicht mehr offen! Gruß owT
von: Luc:-?
Geschrieben am: 11.11.2015 16:23:36
:-?

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Alle zwei Zeilen grau markieren, VBA makro"