Makro: Zellen mit bestimmten Wert suchen und

…Bereich dazwischen färben

Hallo,

ich habe eine Tabelle in der in manchen Zeilen eine Zelle mit „a“ und eine mit „e“ gefüllt ist (Anfang und Ende eines Projekts). Pro Zeile nur einmal!

Mein Makro soll nun alle Bereiche zwischen „a“ und „e“ graufärben (damit ich in meiner Ansicht die Länge des Projekts angezeigt bekomme)

Kann mir jemand helfen?
Danke!

Hallo ladystyles,

leider kenne ich mich mit Makros zu wenig aus, aber vielleicht lässt sich das Problem ja auch mit Format -> Bedingte Formatierung … lösen.

VG, Mertel

…Bereich dazwischen färben

Das geht so:

Sub AE_GrauMarkieren()

Dim rngA As Range
Dim rngE As Range

Dim intCol As Integer
Dim intRowAnf As Integer
Dim intRowEnde As Integer

Set rngA = Cells.Find(What:=„a“, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
Set rngE = Cells.Find(What:=„e“, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
intCol = rngA.Column
intRowAnf = rngA.Row + 1
intRowEnde = rngE.Row - 1

Range(Cells(intRowAnf, intCol), Cells(intRowEnde, intCol)).Select
With Selection.Interior
.ColorIndex = 15
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
End With
End Sub

Eventuell musst Du den Parameter „After“ der ersten Find-Funktion anders setzen (in die Hilfe schauen).
Ich weiß ja nicht, was Dein Programm vorher macht und welche Zelle die ActiveCell ist.

Viel Erfolg!

Ingo

Hallo,
ich kann Dir leider nicht helfen.
BFR

Sorry, kann leider nicht helfen. Viel Erfolg.

Hi,
das lässt sich sogar mit einer bedingten Formatierung lösen. Ist aber nicht ganz einfach zu beschreiben, wie man das macht. Hier der Versuch.
Das Ganze ist so konzipiert, dass „a“ und „e“ nicht eingefärbt werden. (Läßt sich aber diesbezüglich adaptieren.) Das Ganze geht von einer neueren Office-Version aus (Falls das nicht der Fall ist, wird’s doch eine Makro-Version werden.)

a. Wähle eine Zelle in dem Bereich aus, für den die Regel gelten soll. Sagen wir H10.
b. Wähle in Reiter „Start“ - „Bedingte Formierung“ - „Neue Regel“.
c. Wähle „Formel zur Ermittlung der zu formatierenden Zelle verwenden“
d. Gebe bei Regelbeschreibung ein =UND(VERGLEICH(„a“;$A10:G10;0);VERGLEICH(„e“;I10:blush:ZZ10;0))
(Das bezieht sich natürlich hier auf H10, sonst musss man das anpassen)
e. Über Button „Formartieren“ die gewünschte Farbe
wählen.
f. ok drücken
g. Wieder „Bedingte Formulierung“ anwählen - Regeln verwalten
h. Den Bereich „wird angewendet auf“ mit der Maus vollständig anwählen
i. Den gewünschten Bereich im Arbeitsblatt mit der Maus anwählen
j. ok drücken
Fertig.

Ich hoffe, die Beschreibung reicht.

Gruß
Volker

Hallo Volker,

das funktioniert leider so nicht. meine a und e sind variabel verteilt in verschiedenen zellen und haben unterschiedliche abstände.

Danke trotzdem,

Gruß

Hallo,

das sollte kein Problem sein.
Ich hatte es bei mir ausprobiert, mit verschieden verteilten a und e (also in verschiedenen Spalten) und es hatte funktioniert.

Die Idee der Lösung ist: Die bedinget Formatierung für eine Zelle greift, wenn es in einer der Zellen davor ein a gibt (also in Spalte A bis eine Spalte vor der Zeille)und in einer der Zellen dahinter ein e (also in der Zelle direkt dahinter bis Spalte ZZ).

Eine Ferndiagnose ist schwierig.
Welche Version von Office hats du? (Bei ist’s 2010).

Gruß
Volker

Hallo ladystyles,

ich gehe davon aus, dass Excel benutzt wird und je Zeile ein Projekt mit Anfang (a) und Ende (e) vorliegt.

Hier mal ein Progrämmchen, dass das gewünschte macht und als Anregung zu verstehen ist:

Sub SpaltenFaerben()
Dim zeile As Integer
Dim spalte As Integer
Dim colindex As Integer

colindex = xlNone

For zeile = 1 To 25
For spalte = 1 To 25
With Worksheets(1).Cells(zeile, spalte)
.Interior.ColorIndex = colindex
Select Case .Text
Case „a“
colindex = 48
.Interior.ColorIndex = colindex
Case „e“
colindex = xlNone
End Select
End With
Next spalte
Next zeile
End Sub

Es gibt noch Dutzende schönere Varianten um eine Projektlänge darzustellen.

Z. B. kann man mit Datumsfunktionen die Anzahl der Tage zwischen Anfang und Ende berechnen und dann mit dem Ergebnis eine Zeichenkette aufbauen. Die Länge der Zeichenkette zeigt dann die Projektlänge an.
Beispiel: Zelle mit Schriftart „Wingdings“ und folgender Formel: =WIEDERHOLEN(„“;21)
(21 sind hier die Tage bzw. die Zeiteinheit)

Weitere Tips (und bessere Lösungen) gibt’s unter Google: Projektplanung mit Excel oder Excel Gantt

Für Dein Problem spezifisch: http://www.controllingportal.de/Fachinfo/Excel-Tipps…

Gruß
Harry

sorry da weiss ich leider keine Lösung

Kann leider nicht weiterhelfen