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

Tabelle formatieren Zeilen abwechselnd

Tabelle formatieren Zeilen abwechselnd
14.05.2014 08:04:37
Michael
Guten Morgen,
ich habe einen Tabelle mit dem Bereich A:N. Die Anzahl der zeilen kann flexibel sein.
ich möchte den Bereich abwechselnd einfärben, dazu folgendes makro: Sub Tabelle() Dim i As Long For i = 3 To ActiveSheet.UsedRange.Rows.Count If i Mod 2 = 1 Then Rows(i).Interior.ColorIndex = 15 End If Next i End Sub
Allerdings färbt das Makro die gesamte Zeile bis und nicht nur bis Spalte N.
Wie bekomme ich das hin?
Gruß Micha

29
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 08:11:01
Hajo_Zi
Hallo Micha,
warum VBA? Bedingte Formatierung, Formel ist =REST(ZEILE();2)=0

AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 08:14:34
Michael
Hallo Hajo,
die gesamte Tabelle wird vorher schon mit einem Makro verändert und bearbeitet. Zudem wird die Tabelle an drei Standorten erzeugt und soll immer gleich aussehen. ich möchte die Bearbeiter nicht damit quälen dass, sie alles immer wieder neu formatieren müssen. Einfach auf den Knopf drücken und fertig :o)
Gruß Micha

AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 08:39:21
hary
Moin Micha
Cells(i, 1).Resize(1, 14).Interior.ColorIndex = 15

gruss hary

Anzeige
AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 09:15:01
Hajo_Zi
Halo Micha,
benutze doch eine Mustervorlage.
Gruß Hajo

AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 10:01:44
Michael
Hajo,
kannst Du das näher erläutern?
Zum Sachverhalt: die Rohdaten kommen monatlich aus einem Vorsystem und werden im Excel weiterverarbeitet.
Der Spaltenaufbau ist immer gleich, allerdings kann die Zeilenanzahl variieren.
Gruß Micha

UsedRange.Rows.Count -> ist nicht optimal !!
14.05.2014 09:06:30
Matthias
Hallo Michael
Dir ist bewusst, das UsedRange.Rows.Count
die letzte Zeile innerhalb eines benutzten Bereiches zurückgibt?
Ich vermute das ist in XL2010 auch noch so.
Kann es aber nur aus XL2007 ableiten.
Markiere mal einen Bereich der nicht in ("A1") beginnt und setze
wie im Bild einen Inhalt in die Zellen.
Userbild
Problematik verstanden ?
Es sind 19 Zeilen innehalb von UsedRange, deshalb wird dann auch falsch formatiert
Probiers mal aus.
Gruß Matthias

Anzeige
AW: UsedRange.Rows.Count -> ist nicht optimal !!
14.05.2014 10:05:00
Michael
Hallo Matthias,
die Daten beginnen immer in Zeile 3. von daher sollte das so funzen ;o)
Aber ich verstehe deinenen Ansatz.
Gruß Micha

wie Du willst ...
14.05.2014 10:17:29
Matthias
Hi
Ok wenn Du meinst dann machs halt so, Du weißt es ja besser.
 ABCDE
1     
2     
3 xxx 
4 xxx 
5 xxx 
6 xxx 
7 xxx 
8 xxx 
9 xxx 
10 xxx 
11 xxx 
12 xxx 
13 xxx 
14 xxx 
15     


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß Matthias

Anzeige
AW: wie Du willst ...
14.05.2014 10:32:46
Michael
bitte nicht beleidigt sein :o)

AW: hast...
14.05.2014 10:53:44
Michael
Ja? was meinst Du denn?

AW: hast...
14.05.2014 10:58:41
hary
Moin
Dachte hast du mal die Code Zeile reingesetzt.
Sub Tabelle()
Dim i As Long
For i = 3 To ActiveSheet.UsedRange.Rows.Count
If i Mod 2 = 1 Then
'ersetzen--> Rows(i).Interior.ColorIndex = 15
'durch
Cells(i, 1).Resize(1, 14).Interior.ColorIndex = 15
End If
Next i
End Sub

gruss hary

Anzeige
AW: hast...
14.05.2014 11:04:14
Michael
hab ich doch gemacht! hatte ich wohl nicht erwähnt, sorry und danke

AW: Optimierung für deinen Code
14.05.2014 11:09:23
Daniel
Schrebi den Code mal so:
Sub Tabelle()
Dim i As Long
For i = 3 To ActiveSheet.Cells.SpecialCells(xlcelltypelastcell).Row Step 2
Cells(i, 1).Resize(1, 14).Interior.ColorIndex = 15
Next i
End Sub
das "Step 2" spart die Prüfung auf gerade oder ungerade, ausserdem halbiert sich die Anzahl der Schleifendurchläufe.
SpecialCells(xlcelltypelastcell).Row ist auf jeden Fall die Zeilennummer der letzen benutzen Zeile, auch wenn die UsedRange nicht in Zeile 1 beginnt.
Gruß Daniel
Gruß Daniel

Anzeige
bin ich nicht ...
14.05.2014 10:44:36
Matthias
Hallo
... nur ist es schade, das Du es nicht verstanden hast.
Gruß Matthias

AW: bin ich nicht ...
14.05.2014 10:55:02
Michael
Dann hilf mir doch mal auf die Sprünge, ich bin für jede Hilfe dankbar.

AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 09:41:47
Daniel
Hi
markiere die Zellen und formatiere sie als Tabelle (Einfügen - Tabellen - Tabelle)
die Abwechselnde Färbung ist dann automatisch eingestellt, die Farbe kannst du in Entwurf - Tabellenformatvorlagen einstellen.
wenn du Zeilen hinzufügst, erweitert sich die Tabelle und die Färbung automatisch mit.
die alternative wäre folgende:
Markiere alle Zellen und lege eine für sie eine Bedingte Formatierung mit der Regel an:
=Und($A1"";A$1"";IstUngerade(Zeile(A1)))
Die Färbung erfolgt dann in allen ungeraden Zeilen und wenn eine Überschrift vorhanden ist (damit kannst du dann die Formatierung für alle Zellen gültig machen)
Gruß Daniel

Anzeige
AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 09:59:53
Michael
Hallo Daniel,
danke für den Tipp, ist insoweit schon bekannt. Die Tabelle MUSS immer gleich aussehen! bei einer händischen Bearbeitung durch verschiedene Bearbeiter ist das erfahrungsgemäß nicht immer der Fall. Darum die Automatisierung mittels makro

AW: Tabelle formatieren Zeilen abwechselnd
14.05.2014 10:06:02
Daniel
naja, diese Formatierungen legst du einmalig an.
der Anwender, der normal die Daten eingibt, hat damit dann nichts mehr zu tun.
Gruß Daniel

AW: Vorteile der Formatierung als Tabelle
14.05.2014 10:10:47
Daniel
Wenn du die Tabelle als Tabelle formatierst, dann hat das noch ein paar weitere Vorteile:
die Abwechselnde Färbung bleibt konsequent erhalten, auch wenn du
- Zeilen löscht oder einfügst
- die Tabelle umsortierst
- den Autofilter verwendest
beim erweitern der Tabelle werden Formeln und Formatierungen automatisch in die neue Zeile mit übernommen.
für weitere Auswerungen (Pivottabelle) hast du einen Zellbezug, der sich automatisch an die vorhandene Datenmenge anpasst.
Gruß Daniel

Anzeige
AW: Vorteile der Formatierung als Tabelle
14.05.2014 10:51:42
Michael
das ist von Vorteil du hast recht. wie kann ich eine bestimmte Formatierung einem variablen Bereich per Makro zuweisen. Das hab ich bisher auch nicht hinbekommen.

AW: Vorteile der Formatierung als Tabelle
14.05.2014 10:55:24
Daniel
im Prinzip so:
Range("Variabler Bereich").Eigenschaft = gewünschter Wert
wie man den Variablen Bereich bestimmt, hängt von deinen Daten ab.
Gruß Daniel

AW: Vorteile der Formatierung als Tabelle
14.05.2014 11:52:03
Michael
Hallo Daniel,
ich hab mit folgenden code versucht:
Range("A3:M3").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range(Selection, Selection.End(xlDown)), , xlYes).Name = _
"Tabelle1"
Range("Tabelle1[#All]").Select
ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleMedium2"
das geht, ist aber bestimmt nicht 100% optimal.
Allerdings kann man sich damit den ganzen anderen Kram Sparen

Anzeige
AW: den Code kann man noch optimieren:
14.05.2014 12:08:23
Daniel
Probiers mal so:
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A3").CurrentRegion, , xlYes).Name = "Tabelle1"
ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleMedium2"
Zeile 2 und Spalte N sollen durchgäng leer sein, damit .CurrentRegion richtig arbeiten kann.
.CurrentRegion erweitert den Zellbereich ausgehend von der angegebenen Zelle, bis dieser vollständig von 2 LeerZeilen und 2 Leerspalten umschlossen ist (bzw bis zum Rand des Tabellenblatts)
.CurrentRegion kannst du in Excel von Hand mit der Tastenkombination STRG+"A" ausführen
Gruß Daniel

Anzeige
AW: den Code kann man noch optimieren:
14.05.2014 12:24:29
Michael
Danke noch mal an alle ;o)

AW: den Code kann man noch optimieren:
14.05.2014 13:09:29
Ewald
Hallo,
hier ein Beispiel für Tabellenpapier
Sub Tabellenpapier()
Dim myrow
Dim mycol
Dim i
myrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row  'Letzte Zeile
mycol = ActiveSheet.Cells(1, 256).End(xlToLeft).Column  'falls mehr Spalten ampassen
For i = 1 To myrow
If Cells(i, 1).Row Mod 2 = 0 Then
With Cells(i, 1).Resize(1, mycol).Interior  ' Spalte 1 bis letzte benutzte Spalte
.Pattern = xlLightHorizontal
.PatternColor = 5287936
End With
End If
Next
End Sub
Gruß Ewald

AW: Nachtrag
14.05.2014 13:33:29
Ewald
Hallo,
falls Zeilen eingefügt oder gelöscht werden nimm dieses Makro
Sub Tabellenpapier()
Dim myrow
Dim mycol
Dim i
myrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row  'Letzte Zeile
mycol = ActiveSheet.Cells(1, 256).End(xlToLeft).Column  'falls mehr Spalten ampassen
ActiveSheet.Cells.Interior.Pattern = xlNone  'alte Färbung entfernen
For i = 1 To myrow
If Cells(i, 1).Row Mod 2 = 0 Then
With Cells(i, 1).Resize(1, mycol).Interior  ' Spalte 1 bis letzte Spalte
.Pattern = xlLightHorizontal
.PatternColor = 5287936
End With
End If
Next
End Sub
Gruß Ewald

UsedRange
14.05.2014 13:41:53
Rudi
Hallo,
UsedRange solltest du vergessen.
Es reicht eine abweichende Formatierung (Farbe, Schriftart/ -größe, Rahmen, ....) einer Zelle außerhalb deiner Daten um den Bereich zu erweitern.
Oder schreib was in eine Zelle (z.B. XFD1048576), lösch es wieder und lass dein Makro laufen.
Gleiches gilt für ActiveSheet.Cells.SpecialCells(xlcelltypelastcell)
Wenn es sich um einen rundum von leeren Zellen abgegrenzten Bereich handelt, würde ich immer CurrentRegion bevorzugen.
Gruß
Rudi

153 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige