Anzeige
Archiv - Navigation
1692to1696
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

Bereich unter einem anderen Bereich festlegen

Bereich unter einem anderen Bereich festlegen
29.05.2019 22:45:16
Barbara
Hallo
Geht das auch irgendwie einfacher?
Ein bestimmter Range, beginnend drei Zeilen unterhalb eines benannten Bereichs soll bis zur letzten Tabellenzeile grün eingefärbt werden.
Das habe ich zusammengebracht, aber mit einer sehr lange und vielleicht zu komplizierten Zeile. Meine Frage ist, ob das auch irgendwie eleganter geht.
Im folgenden Makro wird als Ausgangslage erst der benannte Bereich beliebig festgelegt.
Dann folgt die fragwürdige Zeile. Sie funktioniert und liefert das richtige Ergebnis.
Sub Versuch()
'Vorbereitung: Ein Bereich namens "Neuzeit" wird definiert.
With ActiveSheet
Range("C2:G2").Name = "Neuzeit"
'        Range("Neuzeit").Interior.Pattern = xlNone
Range("Neuzeit").Interior.Color = vbGreen
Range("Neuzeit").Value = "Klassik"
End With
'Jetzt sollen alle Zellen von drei Zellen unterhalb des oben definierten
'Bereichs bis zur letzten Zeile eingefärbt werden.
With ActiveSheet
'Und jetzt kommt die Monsterzeile:
.Range(.Range("Neuzeit").Offset(3, 0), _
.Cells(Rows.Count, .Range("Neuzeit").Column + _
.Range("Neuzeit").Columns.Count - 1)).Interior.Color = vbGreen
End With
End Sub

LG,
Barbara

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

Betreff
Datum
Anwender
Anzeige
AW: Bereich unter einem anderen Bereich festlegen
29.05.2019 23:14:43
Matthias
Hallo Barbara
vielleicht so?
.Range("C5:G1048576").Interior.Color = vbGreen
Gruß Matthias
AW: Bereich unter einem anderen Bereich festlegen
29.05.2019 23:15:20
Daniel
Hi
dass "+ Range("Neuzeit").Columns.Count - 1" kannst du weglassen.
die Breite der Range ist ja über den ersten Zellbereich definiert, daher reicht beim Zweiten Zellbereich eine Zelle aus, und da ist egal, ob du die Spalte am Anfang oder am Ende nimmst.
ich verwende für sowas aber auch ganz gerne Resize:
With Range("Neuzeit")
.Offset(3, 0).Resize(Rows.Count - .Row - 3 + 1).Interior.Color = vbGreen
End With
wobei ich an deiner Stelle nicht bis zum Ende der Tabelle durchfärben würde, sondern nur bis zum Ende des tatsächlich benutzen Bereichs (Cells.SpecialCells(xlcelltypelastcell).Row).
das Problem ist, dass formatierte Zellen auch zum benutzten Bereich gehören und wenn Excel auf die Idee kommt, dass der benutzte Bereich bis zur letzten Zeile reicht, bläht das nicht nur deine Datei beim Speichern auf, sondern auch der Scrollbalken wird nutzlos und Funktionen wie Summe- oder ZählenWenn brauchen zur Berechnung plötzlich viel länger, wenn die auf ganze Spalten referenzieren.
Gruß Daniel
Anzeige
AW: Bereich unter einem anderen Bereich festlegen
30.05.2019 00:34:48
Barbara
Hi Daniel,
Dein Vorschlag funktioniert. Danke
In Wirklichkeit will ich nicht diese Zellen einfärben, sondern einfach löschen. Da sehe ich kein Problem mit dem Datenspeicher. Oder doch?
Was mich noch interessieren würde:
Wie kann man den beschriebenen Zellbereich finden, wenn er nicht zusammenhängend ist ?
Ich habe wieder ein Makro vorbereitet. Nun mit bunt durcheinander gefüllten Zellen.
Sub Versuch()
'Vorbereitung: Ein Bereich namens "Neuzeit" wird definiert.
With ActiveSheet
Range("C2:G2").Name = "Neuzeit"
Range("Neuzeit").Interior.Color = vbGreen
Range("Neuzeit").Value = "Klassik"
Range("C7") = "Schubert"
Range("D5:D22") = "Mozart"
Range("E11") = "Beethoven"
Range("G9") = "Bach"
Range("H3") = "Wagner"      'ist außerhab des Bereichs
Range("I4:I10") = "Verdi"   'und soll stehen bleiben
End With
With ActiveSheet
With .Range("Neuzeit")
.Offset(3, 0).Resize(Rows.Count - .Row - 3 + 1).Clear
End With
End With
End Sub
LG,
Barbara
Anzeige
AW: Bereich unter einem anderen Bereich festlegen
30.05.2019 01:24:30
Daniel
Löschen ist was anderes als färben.
der benutze Zellbereich auf einem Blatt ist die UsedRange.
die rechte untere Zelle der UsedRange ist cells.SpecialCells(xlcelltypelastcell)
man kann auch mit .FIND nach der letzten befüllten Spalte oder Zeile suchen (hierbei die Parameter entsprechend einstellen, Searchdirection und SearchOrder)
Gruß Daniel
AW: Bereich unter einem anderen Bereich festlegen
30.05.2019 12:21:34
Barbara
Danke. Dazu noch zwei Fragen:
Kann man auch den benutzten Zellbereich nur für einen gegebenen Bereich (zB nur für Spalten B bis F) bestimmen?
Geht .FIND in diesem Fall auch direkt ohne Schleife? Kann man mit .FIND ohne Schleife (also als Einzeiler) nach zB der letzten befüllten Zeile im Bereich der Spalten B bis F suchen? Falls ja, kannst Du mir bitte zeigen, wie?
LG, Barbara
Anzeige
AW: Bereich unter einem anderen Bereich festlegen
31.05.2019 14:00:05
Daniel
Hi
letzteZeile = Range("B:F").Find(what:="?*", LookIn:=xlFormulas, searchdirection:=xlPrevious, searchorder:=xlByRows).Row
Gruß Daniel
AW: Bereich unter einem anderen Bereich festlegen
01.06.2019 21:06:15
Barbara
Hi Daniel,
funktioniert. Vielen Dank.
LG, Barbara

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige