PDA

Vollständige Version anzeigen : Formatierungen


Mightysmagic
21.09.2001, 10:03
HI,

ich habe ein paar dynamische Zellen aus denen ich lediglich die Formatierung auslesen und in andere Felder kopieren will. Folgende Situation:
Ich habe einen Kalender mit der Zellformatierung Mo,Di,Mi,Do,Fr,Sa,So
Sa und So werden grau dargestellt (VBA-Farb-Nummer 15. Dieses habe ich mit Hilfe eines Verweises (Tabelle!ZelleXY) in eine andere Tabelle ausgelesen und mit einer bedingten Formatierung in der neuen Tabelle eingefärbt. Diese einfärbung soll nun in 35 jeweils darunterliegende Zellen übertragen werden. oweit so gut. Nun ändert sich aber die Position von Sa und So jedes Jahr in den Zellen, so dass diese Formatierung in den anderen 35 Zellen entsprechend mitwandern soll. Wie kann ich so etwas realisieren?

Mightysmagic

<p align="left"><font size="1" face="Century Gothic"><font color="#000000">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt.</font>

chrissy
21.09.2001, 11:16
Hi

kannst du die Zellen darunter nicht bedingt Formatieren mit der Formel ' =Wenn(ZelleMitWochentag="Samstag";wahr;Wenn(ZelleMitWochentag="Sonntag";wahr)) ' ??

Mightysmagic
21.09.2001, 12:18
Das funktioniert ja soweit so gut, jedoch habe ich nun das Problem, dass die jeweilige Zelle wohl nicht den Farbcode 15 annimmt, den das VBA-Modul braucht.

Die Formel lautet (leicht abgeändert):
=WENN(H$4=7;WAHR;WENN(H$4=1;WAHR))

Kann mir jemand erklären, wie ich das nun erreichen kann, dass sich das Format für VBA lesbar verändert?

jinx
23.09.2001, 16:06
<font size="2" face="Century Gothic">Moin, Mighty(s)magic,

folgendes habe ich bei Hans W. Herber gefunden - vielleicht eine Anregung für Deine Arbeit:

Text-Index: 0565/99
Thema: Dialog
Betrifft: Kalender mit markierten Wochenenden und Feiertagen anlegen
Frage: Wie kann ich eine neue Arbeitsmappe anlegen, in der das erste Blatt einen Kalender mit markierten Feiertagen und Wochenenden enthält?
Antwort: Den nachstehenden Code bei XL5/7 in ein englischsprachiges, bei XL8 ein allgemeines Modul eingeben, einer Schaltfläche zuweisen und starten.
_
<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> JahresKalender()
<span class="TOKEN">Dim</span> kJahr$
Application.ScreenUpdating = <span class="TOKEN">False</span>
kJahr = InputBox(&quot;Kalenderjahr:&quot;, , Year(Date))
<span class="TOKEN">If</span> kJahr = &quot;&quot; <span class="TOKEN">Then</span> <span class="TOKEN">Exit Sub</span>
Worksheets(&quot;Feiertage&quot;).Range(&quot;C1&quot;) = <span class="TOKEN">CInt</span>(kJahr)
<span class="TOKEN">Call</span> BlattAnlegen
<span class="TOKEN">Call</span> JahrAnlegen(kJahr)
<span class="TOKEN">Call</span> Wochenende
<span class="TOKEN">Call</span> Feiertage(ThisWorkbook.Worksheets(&quot;Feiertage&quot;))
Range(&quot;A1&quot;).Select
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Private Sub</span> BlattAnlegen()
<span class="TOKEN">Dim</span> i%
Workbooks.Add
Application.DisplayAlerts = <span class="TOKEN">False</span>
<span class="TOKEN">For</span> i = 1 <span class="TOKEN">To</span> Sheets.Count - 1
Sheets(1).Delete
<span class="TOKEN">Next</span> i
Application.DisplayAlerts = <span class="TOKEN">True</span>
Range(&quot;A1&quot;) = &quot;Datum&quot;
Range(&quot;C1&quot;) = &quot;Eintragung&quot;
<span class="TOKEN">With</span> Range(&quot;A1:C1&quot;)
<span class="TOKEN">With</span> .Font
.Bold = <span class="TOKEN">True</span>
.Size = 10
.ColorIndex = 6
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
.Interior.ColorIndex = 11
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Private Sub</span> JahrAnlegen(kJahr)
<span class="TOKEN">Dim</span> n%
Windows(1).Caption = &quot;Jahreskalender &quot; &amp; kJahr
ActiveSheet.Name = kJahr
<span class="TOKEN">If</span> kJahr Mod 4 = 0 <span class="TOKEN">Then</span> n = 367 <span class="TOKEN">Else</span> n = 366
Range(&quot;A2&quot;) = DateSerial(kJahr, 1, 1)
Range(&quot;A3&quot;).Formula = &quot;=A2+1&quot;
Range(&quot;A3:A&quot; &amp; n).FillDown
Range(&quot;A2:A&quot; &amp; n).Copy
Range(&quot;A2:A&quot; &amp; n).PasteSpecial (xlValues)
Columns(1).Copy Columns(2)
Range(&quot;B2:B&quot; &amp; n).NumberFormat = &quot;dddd&quot;
Range(&quot;B1&quot;) = &quot;Tag&quot;
Range(&quot;B1&quot;).HorizontalAlignment = xlRight
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Private Sub</span> Wochenende()
<span class="TOKEN">Dim</span> i%
i = 2
<span class="TOKEN">Do</span> <span class="TOKEN">Until</span> IsEmpty(Cells(i, 1))
<span class="TOKEN">If</span> WeekDay(Cells(i, 1)) = 7 <span class="TOKEN">Then</span>
Range(Cells(i, 1), Cells(i, 2)) _
.Interior.ColorIndex = 40
<span class="TOKEN">ElseIf</span> WeekDay(Cells(i, 1)) = 1 <span class="TOKEN">Then</span>
Range(Cells(i, 1), Cells(i, 2)) _
.Interior.ColorIndex = 3
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
i = i + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Private Sub</span> Feiertage(TB1 <span class="TOKEN">As</span> Worksheet)
<span class="TOKEN">Dim</span> gZelle <span class="TOKEN">As</span> Range
<span class="TOKEN">Dim</span> i%
i = 1
<span class="TOKEN">Do</span> <span class="TOKEN">Until</span> IsEmpty(TB1.Cells(i, 2))
<span class="TOKEN">Set</span> gZelle = Range(&quot;A:A&quot;).Find(DateValue _
(TB1.Cells(i, 2)), lookin:=xlFormulas)
<span class="TOKEN">With</span> gZelle
.Interior.ColorIndex = 4
.Offset(0, 1).Interior.ColorIndex = 4
.NoteText TB1.Cells(i, 1)
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
i = i + 1
<span class="TOKEN">Loop</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span><hr>&nbsp;
<span class="TOKEN">Public Function</span> EasterDate(Yr <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>)
<span class="TOKEN">Dim</span> D <span class="TOKEN">As</span> <span class="TOKEN">Integer</span>
D = (((255 - 11 * (Yr Mod 19)) - 21) Mod 30) + 21
EasterDate = DateSerial(Yr, 3, 1) + D + (D &gt; 48) + _
6 - ((Yr + Yr \ 4 + D + (D &gt; 48) + 1) Mod 7)
<span class="TOKEN">End</span> <span class="TOKEN">Function</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag der Code für dieses Forum und die Signatur angepasst.<font>

Mightymagic
23.09.2001, 21:40
So weit ok, jedoch hilft mir das nicht mehr weiter. Einen Kalender habe ich bereits realisieren können, indem ich eine WOCHENTAG-Formel verwende. Die Ergebnisse der Formel übertrage ich in meine erste Tabelle und Färbe dann mit Hilfe der Bedingten Formatierung die für die Mitarbeiter relevanten Zellen. Auch kein Problem, da sich das ganze ja nun auch den folgejahren anpasst. So:

Jetzt haben die Zellen jedoch nicht den VBA-Wert 15, der ja grau darstellt (die Farbe meiner Zellen), sondern irgendeinen anderen, den ich nicht kenne. Wie kann ich diesen Farbwert nun herausbekommen??? Kann ich den eventuell sogar so ändern, dass da wieder 15 draus wird? Sonst müßte ich den Farbwert an X Stellen ändern...

jinx
24.09.2001, 20:56
<font size="2" face="Century Gothic">Moin, Mightymagic,

im ersten Posting schreibst Du, dass Du den Zellen den Wert 15 (grau) zuweist, im zweiten haben sie einen anderen Wert...?

Die 56 Werte der Standardeinstellung der Farben bei Excel mitsamt Farbindexwert kann man hier einsehen: ColorIndex-Eigenschaft (über OH: Farbpalette).

Ansonsten gilt: Bedingte Formatierung per VBA mit FormatConditions.Interior.ColorIndex = 15....

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>

Mightymagic
24.09.2001, 21:52
Ein Kollege sagte mir, dass anhand der Bedingten Formatierung, wie ich sie oben beschrieben habe, der Zelle der Wert -4142 als grau zugewiesen wird. Jedoch hatte das nix an dem bereits beschriebenen Problem geändert. Jetzt versuche ich es aber mal mit Deinem Tip.