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

gefärbte Zellen mit Zeichen füllen

gefärbte Zellen mit Zeichen füllen
28.02.2013 17:15:22
Det
Hallo zusammen, ich möchte in mehere Bereiche eines Arbeitsblattes gefärbte Zellen mit einem "-" füllen, dabei ist es egal mit welcher Farbe die Zelle eingefärbt ist. Bin für jede Hilfe dankbar. Gruß Det

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nicht egal dürfte aber sein, ob sie ...
28.02.2013 18:45:38
Luc:-?
…direkt oder per BedingtFormat gefärbt wurde, Det… ;->
Außerdem wäre interessant zu wissen, welche Farbe die Standardzellfarbe ist (sonst dürfte ohne anzunehmen sein), also der Inhalt solcher Zellen nicht ersetzt wdn soll.
Im Übrigen müsste VBA eingesetzt wdn!
Gruß Luc :-?

AW: Nicht egal dürfte aber sein, ob sie ...
28.02.2013 18:55:50
Det
gefärbt wurde mit bedingterFormatierung, soll sich aber nicht ändern wenn sich die Farbe später ändert. Braucht sich also nicht aktualisieren. Ansonsten Standartzellfarbe ist "ohne"
VBA ist schon ok :-)

Aha, irgendwie widersprüchlich, ...
28.02.2013 19:35:45
Luc:-?
…Det…
gefärbt wurde mit bedingterFormatierung, soll sich aber nicht ändern wenn sich die Farbe später ändert. Braucht sich also nicht aktualisieren.
Was nun, darf sich die Farbe ändern oder nicht? Bei Bezug der BedingtFormatierung auf die Standortzelle oder eine andere, die so einen Strich erhält, würde die Färbung idR unwirksam wdn, weil dann höchst­wahr­scheinlich die Bedingung der Formatierungsregel nicht mehr erfüllt ist.
Im Übrigen könnte man zwar auf allen Zellen des Bereichs problemlos nach Anlage einer BedingtFormatierung suchen, wüsste aber nicht, ob eine ihrer Bedingungen erfüllt ist, denn dabei handelt es sich nicht um das Objekt Zelle (Range, dessen ZellFarbIndex bleibt xlNone), sondern um das FormatCondition-Objekt und das verrät uns seine Bedingungsfmln nur auf deutsch (oder hast du ein englischsprachiges Xl?). Da VBA nur Englisch spricht, müsste die Fml ins US-Original umgewandelt wdn, um sie auswerten zu können (gibt auch eine Methode auf Deutsch über die XLM-Fkt AUSWERTEN in einer benannten Fml, aber das ist aus einem VBA-Pgm heraus noch komplizierter!).
So kann also auf einfache Weise nicht festgestellt wdn, welche deiner Zellen nun farbig sind oder nicht, egal, ob sie die Farbe behalten sollen (auch das ist möglich!) oder nicht.
Falls du stets dieselbe Bedingung zum Hervorrufen der Farbe benutzt hast, ist es ja noch relativ unkompliziert → man wertet die einfach für jede Zelle nochmal per VBA aus. Sind es aber ganz unterschiedliche, was bei verschiedenen Farben ja zu befürchten ist, und womöglich noch komplexere Bedingungsformeln im Spiel, kann das rational nur vollautomatisiert erledigt wdn. Aber gerade das, ich habe das heute schon mal geschrieben, ist mE eine Art „Heiliger Gral“ der xlVBA-Pgmierung! Und der ist bekanntlich bis Heute noch nicht identifiziert!
Fazit: Es geht zwar, kann aber u.U. recht aufwendig wdn. Deshalb solltest du uns …
1. noch die erforderlichen Infos zukommen lassen,
2. über mindestens gute (besser sehr gute) VBA-Kenntnisse verfügen, damit du Beschreibungen verstehen und nachvollziehen kannst.
Gruß Luc :-?

Anzeige
AW: Aha, irgendwie widersprüchlich, ...
28.02.2013 19:54:04
Det
zu Punkt 1. Ich formatiere mit der bedingten formatierung das Wochenende in einer Anwesenheitsliste mit vielen Personen. Ich zähle alle leeren Zellen als Anwesend, deswegen möchte ich das am Wochenende ein - eingetragen wird. Sind dann doch Personen anwesend brauche ich nur das "-" entfernen und ich habe die Anwesenden.
zu Punkt 2. Ich wäre froh wenn ich sehr gute VBA-Kenntnisse hätte, ich finde das schon Klasse was damit alles geht aber... das wird noch dauern :-)

Na, dann dürfte es nicht so schwer sein, ...
28.02.2013 21:16:11
Luc:-?
…denn man muss ja nur die WE identifizieren, nicht ihre Färbung, Det!
Also muss nur noch bekannt sein, in welchem Zellbereich (bitte mitteilen!) die Tagesdatumsangaben stehen, und man könnte die WE per Wochentagsfkt identifizieren. Das wird in eine Subprozedur eingebaut, die den ganzen Signierbereich (bitte Zellbereich mitteilen!) behandelt, und fertig wär's, wenn du die laufen lässt. Die BedingtFormatierung der WE wäre also irrelevant für diese Aufgabe.
Hättest du diese PrimärInfo gleich mitgeteilt, statt mit einer sekundären aufzuwarten, hättest du die Lösung möglicherweise schon… ;->
Also noch die beiden erwähnten Angaben nachliefern, dann können dir hier die meisten AWer helfen!
Luc :-?

Anzeige
AW: Na, dann dürfte es nicht so schwer sein, ...
01.03.2013 00:58:39
Det
Datum steht in F6 bis NG6, Signierbereich ist F37:NG66 F72:NG101 F107:NG136 und F142:NG172.
Sorry für die knappe Nachricht, hab Nachtschicht und schreibe mit Handy. Schau erst heut nachmittag wieder rein
Gruß Det

Na, dann iss ja noch Zeit! ;-) owT
01.03.2013 01:27:50
Luc:-?
:-?

So, das dürfte es jetzt sein, ...
01.03.2013 19:06:57
Luc:-?
…Det;
Flgd Prozedur in ein normales Modul des VBProjekts (Rechtsklick auf Projekt im VBE-ExplorerEinfügenModul → in oberste Zeile desselben Option Explicit eintragen falls nicht schon vorhanden [kann im VBE eingestellt wdn]) einfügen (kurze PgmErklärung s.u.)…
Rem Signierung v.WE- u.spez (F-)Tagen m.festgelegtem Symbol
'   Achtung! Prozedur bezieht sich auf d.jeweils akt Blatt!
'   adKalBer-KT müssen echte Datumsangab sein (auch 29.2.)!
'   Vs1.0 -LSr -CD:20130301 -1pub:20130301/herber -lUpD:20130301t
Sub WESignum()
Const lfdNr1WET As Integer = 6, symSig$ = "'-", adFT$ = "F6,DW6,NA6:NB6", _
adKalBer$ = "F6:NG6", adSigBer$ = "F37:NG66,F72:NG101,F107:NG136,F142:NG172"
Dim anzVorsp As Long, ebFT As Range, KalT As Range, SigBer As Range
anzVorsp = Range(adKalBer).Column - 1
For Each KalT In Range(adKalBer)
If WorksheetFunction.Weekday(KalT, 2) 
Die Konstanten am PgmAnfang haben folgende Bedeutung:
lfdNr1WET → lfd Nr des Wochentags, ab dem die Signierung mit symSig erfolgen soll
symSig → WE-Signier-Symbol – bei - (bzw +) hier mit Textpräfix ', falls ZellFormat nicht Text ist
adFT → KT-Adress-Auflistung der Feier- u.sonstigen Tage, die ebenfalls einbezogen wdn sollen (muss noch vervollständigt wdn!)
adKalBer → Adresse des KT-Notat-Bereichs (hier Jahreskalender)
adSigBer → Adress-Auflistung der Signierbereiche (hier als Mehrfachbereichsangabe)
Durch diese Vorgehensweise stehen alle ggf zu aktualisierenden Angaben am PgmAnfang und können so leicht späteren Erfordernissen angepasst wdn. In den folgd PgmZeilen muss so idR nichts geändert wdn.
Die nachflgd Variablen haben diese Bedeutung:
anzVorsp → Vorspaltenanzahl der Tabelle; wird automatisch aus Range(adKalBer) ermittelt und im Pgm als Korrektiv benötigt
ebFT → Objekt-Laufvariable für FT-Bereiche aus Range(adFT)
KalT → Objekt-Laufvariable für Kalenderbereich Range(adKalBer) (→nach For Each-Abarbeitung automatisch Nothing
SigBer → Objekt-Laufvariable für Signierbereiche aus Range(adSigBer) (→dito)
Die Symbole wdn spaltenweise (auf 1× pro Signier-Teilbereich) eingetragen und horizontal zentriert.
Probleme könnte der 29.2. in Nicht-Schaltjahren bereiten (auch im BedingtFormat). Behelf: Als Jahr ein Schaltjahr eintragen, in dem der 29.2. nicht (bzw gerade doch, je nach Erfordernis) auf ein WE fällt.
Viel Erfolg!
SchöWE, Gruß Luc :-?

Anzeige
AW: So, das dürfte es jetzt sein, ...
02.03.2013 10:29:56
Det
Hallo Luc,
erst mal sage ich schönen Dank, ich werde das von Dir ausprobieren, muß es aber in Ruhe machen, damit ich es auch verstehe. (mit nur reinkopieren lernt man nix)
ich hatte mal das Datum mit Farben markiert für einen Schichtkalender, und habe das dan abgewandelt, funktioniert auch.

Sub FreieTageMakieren()
'Dimmensionierung der Variablen
Dim Zeile As Long           'Zeilenvariable
Dim Spalte As Long          'Spaltenvariable
Dim anfSpalte As Long       'Anfang der Spalte
Dim anfZeile As Long        'Anfang der Zeile
Dim endeZeile As Long       'Ende Zeile
Dim endeSpalte As Long      'Ende Spalte
Dim AktZeile As Long        'Aktuelle Zeile
Dim AktSpalte As Long       'Aktuelle Spalte
Dim ZeileDatum As Long      'Zeile wo Datum steht
anfSpalte = 6          'Anfangswert der Spalte
endeSpalte = 371       'Ende der Schleife bei Spalte
anfZeile = 8           'Anfangswert der Zeile
endeZeile = 34          'Ende der Schleife bei Zeile
ZeileDatum = 6         'Zeile wo Datum steht
For Zeile = anfZeile To endeZeile      'Schleife für Zeile
For Spalte = anfSpalte To endeSpalte   'Schleife für Spalte
Cells(Zeile, Spalte) = ""
Select Case Cells(ZeileDatum, Spalte) Mod 7
Case 1
Cells(Zeile, Spalte) = "'-" 'Frei mit "-" füllen
Case 2
Cells(Zeile, Spalte) = "'-" 'Frei mit "-" füllen
End Select
Next Spalte
Next Zeile
End Sub
Also nochmals besten Dank und ein schönes Wochenende
Gruß Det

Anzeige
Was du hier zeigst, ...
02.03.2013 12:31:06
Luc:-?
…Det,
ist doch recht statisch. Setzt Vorgabe des Start-Wochentags voraus, der bekanntlich jedes Jahr anders sein kann. Meinem Vorschlag, Konstanten einzusetzen (deine 5 Zuweisungen am PgmAnfang!), bist du auch nicht gefolgt. Auch keine Berücksichtigung von Feiertagen zu entdecken. Vermute deshalb, dass es sich hierbei um eine Parallelentwicklung von deiner Hand handelt.
Na, dann schau mal, was dir besser gefällt! ;-)
Gruß+schöWE, Luc :-?

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige