Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ungenutzte Fläche einfärben

Forumthread: ungenutzte Fläche einfärben

ungenutzte Fläche einfärben
13.10.2004 17:40:48
Rolf
Hallo Experten,
ich möchte die ungenutzte Fläche eines Tabellenblatts einfärben,
also alles, was nicht UsedRange ist.
Hat jemand eine griffige Prozedur?
Herzliche Grüße
Rolf Beißner
Anzeige
Blende doch lieber alles aus...
Boris
Hi Rolf,
...denn ansonsten hast du nen ziemlich großen UsedRange, der so ca. 16 Mio. Zellen umfasst...
Grüße Boris
Das mit dem großen UsedRange...
Boris
...war natürlich Quatsch - aber dennoch würd ich beim Ausblenden bleiben. Ergibt auch ein schönes Hintergrund-Grau...
Grüße Boris
Wieso Quatsch?
Bert
Ist schon so, dass gefärbte Zellen in Usedrange eingehen.
Bert
Anzeige
AW: Blende doch lieber alles aus...
13.10.2004 17:54:33
Rolf
Hallo Boris,
manuell?
Aber abgesehen davon:
Wenn du in einem leerem Tabellenblatt
mit Cells markierst und alles, sagen wir mal,
schwarz färbst, dann gibt ..UsedRange.Address
$A$1 zurück - statt 16 Mio.
Problem darf also weiterhin gelöst werden.
Herzliche Grüße
Rolf
Anzeige
Problem darf also weiterhin gelöst werden.
th.heinrich
hallo Rolf,
BEARBEITEN-GEHE ZU-INHALTE-LEERZELLEN und faerben.
wie das mit VBA funzzt weist Du besser als ich.
gruss thomas
Dann wird alles gefärbt...
Boris
Hi Thomas,
...auch die leeren innerhalb des UsedRange.
Grüße Boris
dachte das waere die absicht ? ot.
th.heinrich
Anzeige
AW: Blende doch lieber alles aus...
Boris
Hi Rolf,
auch wenn das manuell mit eine paar Tastenkombis schnell erledigt ist, hier ein Code zum Ein-und Ausblenden (je nachdem, was grad angesagt ist).
Option Explicit

Sub aus_und_einblenden()
Dim lsP As Integer
Dim lRow As Long
lsP = Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
lRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
Rows(lRow + 1 & ":" & Rows.Count).Hidden = Not Rows(lRow + 1).Hidden
Range(Cells(1, lsP + 1), Cells(1, Columns.Count)).EntireColumn.Hidden = Not Columns(lsP + 1).Hidden
End Sub

Grüße Boris
Anzeige
AW: Blende doch lieber alles aus...
13.10.2004 18:21:01
Rolf
Hallo Boris,
danke - das ist mindestens mal eine Teillösung,
die den Spezialfall abdeckt, dass UsedRange
oben links liegt. Befindet sie sich dagegen
irgendwo im Gelände, soll ja vorkommen, bleibt oben
+ links alles Gitternetz.
Vielleicht noch 'nen Versuch?
Herzliche Grüße
Rolf
Anzeige
AW: Blende doch lieber alles aus...
Boris
Hi Rolf,
dann eben noch 2 Abfragen mit der Find-Methode nach der ersten Spalte und der ersten Zeile - zudem klären, ob die erste Spalte / Zeile nicht belegt ist.
Dann den Sums von Zeile 1 bis 1. benutzter Zeile / Spalte 1 bis 1. benutzere Spalte ausblenden.
Alles im Prinzip nach dem gleichen Muster wie bereits gepostet.
Sind ein paar Zeilen Programmierung.
Grüße Boris
Anzeige
AW: Blende doch lieber alles aus...
13.10.2004 18:40:26
Rolf
Hallo Boris,
danke - das habe ich verstanden.
Vorgeschwebt hatte mir eine Lösung nach der Formel
UnusedRange = Cells - UsedRange
Deine Lösung ist zumindest kompakter als mein bisheriges Gewurstel.
Herzliche Grüße
Rolf
AW: Blende doch lieber alles aus...
K.Rola
Hi Boris,
und was ist mit Kommentaren und Grafikobjekten?
Gruß K.Rola
Anzeige
Die hat´s nicht zu geben...
Boris
Hi K.Rola,
...ganz einfach :p
Ja - was ist eigentlich damit? Gute Frage...
Grüße Boris
doch lieber einfärben
13.10.2004 19:54:19
Rolf
Hallo K.Rola,
schön, dass du mir hilfst.
Folgender Code funktioniert nicht,
weil zwischen copy und paste
offenbar nichts passieren darf.
Aber vielleicht kann man das Format
anders retten und du weißt wie?!

Sub einfärben()
Dim ur As Range
Set ur = ActiveSheet.UsedRange
ur.Copy
Cells.Interior.ColorIndex = 15
ur.Select
Selection.PasteSpecial (xlFormats)
Application.CutCopyMode = False
End Sub

Herzliche Grüße
Rolf
Anzeige
Lager den UsedRange auf ein anderes Blatt aus...
Boris
Hi Rolf,
...und hol ihn dir dann wieder.
Im Beispiel temporär auf Blatt 2.
Option Explicit

Sub einfärben()
Dim ur As Range
Set ur = ActiveSheet.UsedRange
ur.Copy Sheets(2).Range(ur.Address)
Cells.Interior.ColorIndex = 15
Sheets(2).Range(ur.Address).Copy Range(ur.Address)
Application.CutCopyMode = False
End Sub

Grüße Boris
Anzeige
AW: Lager den UsedRange auf ein anderes Blatt aus...
13.10.2004 20:19:18
Rolf
poh ey Boris,
dat haut mich getz aber ausse Socken,
sonne Lösung von sonn Experte wie dich
Trotzdem herzlich
Rolf
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

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