Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nachtrag: Füllfarbe 43 ?

Nachtrag: Füllfarbe 43 ?
13.01.2008 00:00:44
Selma
Hallo Leute,
ich habe die Frage schonmal gestellt und dachte nach einem Test, dass meine Frage gelöst wäre.
Das Makro soll folgendes machen: nur wenn in Spalte T die Zelle mit der Füllfarbe 43 dargestellt ist, dann soll die Zelle in Spalte W auch mit der Füllfarbe 43 dargestellt werden. Ansonsten sollen die Farben von anderen Zellen unverändert bleiben.
Was muss ich an Makro (siehe Datei) von Uwe verändern?
Anbei die Musterdatei mit Arbeitsblätter (VORHER / NACHHER): https://www.herber.de/bbs/user/48976.xls
Vielen Dank im Voraus.
Liebe Grüße,
Selma

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
rng.Offset(0, 3).Interior.ColorIndex = 43
13.01.2008 06:49:57
Matthias
Hallo

Sub BGC_Angleichen()
'die Variablen, die Du nicht brauchst solltest Du entfernen
'wenn Du z.B. Offset(0, 3) benutzt und nicht Offset(0, refCoffs) dann brauchst Du  _
die Variable nicht(gleiches gilt für lastR und bgC).
'Deklarierte, aber nicht genutzte Variablen blockieren nur Speicherplatz!
Dim rng As Range, bgC As Integer, refC As Integer, refCoffs As Integer, lastR As Long
refC = 20 'Wert für Spalte T
refCoffs = 3 ' drei Spalten weiter nach rechts
For Each rng In Range(Cells(1, refC), Cells(Cells(65535, refC).End(xlUp).Row, refC))
If rng.Interior.ColorIndex = 43 Then rng.Offset(0, 3).Interior.ColorIndex = 43
Next
End Sub


oder so:
durch das Setzen des Farbwertes in die Variable ColorIdx bist Du flexibler.
Du brauchst bei gewünschter Farbwertänderung nur einmal im Code ändern.


Sub BGC_Angleichen()
'nicht benutzte Variablen habe ich entfernt
Dim rng As Range, refC As Integer
Dim ColorIdx As Byte
ColorIdx = 43 'setzt den Farbwert in eine Variable
refC = 20 ''Wert für Spalte T
For Each rng In Range(Cells(1, refC), Cells(Cells(65535, refC).End(xlUp).Row, refC))
If rng.Interior.ColorIndex = ColorIdx Then rng.Offset(0, 3).Interior.ColorIndex = rng. _
Interior.ColorIndex
Next
End Sub


Userbild

Anzeige
AW: rng.Offset(0, 3).Interior.ColorIndex = 43
13.01.2008 13:23:00
Selma
Hallo Matthias,
vielen Dank es funktioniert prima.
Eine Frage noch.... die letzte benutze Zelle soll in Spalte A ermittelt werden. Zur Zeit wird dies meine ich in Spalte T ermittelt. Was muss ich ändern?
Danke !
Liebe Grüße,
Selma

AW: @Selma - Hinweis
13.01.2008 13:43:18
ingUR
Hallo, @Selma,
sofern Du nur einmal die Farben der Spalte "T") (Ordnungzahl 20) festgelegt werden, ist der Programmcode von Mathihas einzusetzen, wenn die übrigen Farben der anzupassenden Spalte erhalten bleiben sollen.
Würden sich allerdings in einem Ereignis nach der Angleichung die Hintergrundfrabwerte der Spalte "T" verändern und z.B. eine Zelle mit dem Farbert 43 nun eine andere Farbzahl erhalten, so wird bei einem erneuten Durchgang der aus dem ersten Durchgang gesetzte Farbwert 43 in der anzupassenden Zelle nicht verändert, obwohl in Spalte "T" die Referenzzelle nicht mehr den Farbwert 43 hat. Ich wies bereits auf diesen Umstand hin.
Ist also keine Farbveränderung der Zellen in Spalte "T" mit anschliessendem Abgleich vorgesehen, sind keine weiteren Schritte erforderlich. Andernfalls wird es komplexer, da Du eine "Ur-Lste" mit den Urspunkshintergrundfarben der Zellen in der anzupassenden Spalte erstellen muß (z.B. als Kopie der Spalte auf einem anderen Tabellenblatt oder als Zusatzspalte im Tabelelnblatt ausserhalb des eigentilichen Anwenderbereiches (ggf. temporär aus-/einblenden).
Gruß,
Uwe
P.S.
Eine kleine Ergänzung zum Programmcode von Matthias, da Du die Bereichsgrenze nach "A" ermittlen willst, obwohl für die Prozedur selbst die Spalte "T" vollkommen genügt, da hiernach das Kriterium festgelegt wird, es also unabhängig von der anzahl in der Spalte "A" ist. Denn wenn in "T" mehr Zeilen vorhanden sind, wie in "A", dann wird der Rest von Spalte "T" nicht abgearbeitet; jedoch wenn in "T" weniger Spalten sind als in "A", dann ergibt sich aus der Abarbeitung des Restes von "T" keine Änderung in der Spalte "W":
For Each rng In Range(Cells(1, refC), Cells(Cells(65535, "A").End(xlUp).Row, refC))

Anzeige
AW: @Selma - Hinweis
13.01.2008 18:50:00
Selma
Hallo Uwe,
vielen, vielen Dank für dein Beitrag !
Danke auch an Matthias.
Liebe Grüße,
Selma

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige