Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1240to1244
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

KW in 3 Schichten aufteilen - VBA

KW in 3 Schichten aufteilen - VBA
Matthias
Hallo Zusammen,
ich möchte den Kalenderwochen einen 3er Rhytmus geben durch Einfärbung der Zelle.
In den Zellen F8:AJ8 ; F47:AJ47 ; F86:AJ86 steht jeweils die KW. pro Monatsplatt
Die Monate sind In Sheets aufgeteilt (Sheet 1, 2, 3,.... )
Eine VBA Lösung wäre mir sehr recht...
Gruß
Matthias

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

Betreff
Benutzer
Anzeige
etwas mager
03.12.2011 11:57:03
Erich
Hi Matthias,
deine Aufgabenbeschreibung reicht (zumindest mir) nicht aus.
Spalte F bis Spalte AJ sind 31 Spalten. Das könnten die Tage eines Monats sein.
Was ist bei Monaten mit weniger als 31 Tagen?
Was genau steht in F8:AJ8, was in F47:AJ47 und was in F86:AJ86 ?
Warum kommen auf einem Blatt die KWs in drei Zeilen - 8, 47 und 86 - vor?
Worin unterscheiden sich diese drei Zeilen?
Mit KWs zu rechnen, funzt innerhalb des Jahres ganz gut.
Probleme aber kann es geben am Jahresanfang und am Jahresende:
Da beginnt schon mal ein Jahr mit Woche 53 (letzte Woche des Vorjahres),
oder das Jahr endet mit Woche 1 (der 1. Woche des Folgejahres).
Das wäre in Formeln oder VBA zu berücksichtigen.
Einfacher wäre es vermutlich, nicht von der KW, sondern vom jeweiligen Tagesdatum auszugehen.
Wo und wie kommen Tagesdaten in deinem Blatt vor?
Noch eine Frage:
Bei der Fragestellung drängt sich die bedingte Formatierung geradezu auf.
Was bringt dich (besonders bei "Excel gut- VBA bescheiden") dazu, das nicht in Excel zu erledigen,
sondern in VBA haben zu wollen?
Wie auch immer: Eine Beispieltabelle (Mappe mit 1 oder 2 Blättern) wäre hilfreich.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Mit Beispielmappe - bitte in VBA
03.12.2011 17:32:40
Matthias
Hallo Erich G.
war in der Zwischenzeit mit Schrank und Regal aufbauten beschäftigt, nun zurück zum Thema:
In den Zellen F8:Aj8 steht Je Zelle =Kalenderwoche(F10;21) ....... (AJ10;21) Frühschicht
In den Zellen F47:Aj47 steht Je Zelle =Kalenderwoche(F49;21) ....... (AJ49;21) Spätschicht
In den Zellen F86:AJ86 steht Je Zelle =Kalenderwoche(F88;21) ....... (AJ88;21) Nachtschicht
Der Farbindex sollte Früh= grün ; Spät= blau ; Nacht= braun
Die Monatsblätter sind Identisch aufgebaut - es betrifft die selben Zellen.(Sheet 1 - Sheet 12)
Eine Beispielmappe lege hier bei:
https://www.herber.de/bbs/user/77800.xlsx
Bitte um VBA-Lösung, da ich mich dort weiterbilden möchte .
Excel ist ein Hobby von mir...möchte nicht als Profi enden, aber immer gerne was dazu lernen.
Danke , Gruß Matthias
Anzeige
KW einfärben mit VBA
06.12.2011 01:43:49
Erich
Hi Matthias,
es hat etwas länger gedauert, aber dafür habe ich für dich etwas in VBA gebastelt,
das ich normalerweise einfacher in Excel mit bed. Formatierung umgesetzt hätte.
Hier der Code:

Option Explicit
Sub WochenFarbe()
Dim avCol, lngA As Long, lngB As Long, lngF As Long
Dim lngT As Long, ww As Long, lngR As Long
'               grün     blau     braun
avCol = Array(5287936, 12611584, 411543)
lngA = 6                                     ' ab Spalte F
For lngR = 0 To 2                            ' in 3 Zeilen leeren
Cells(8 + 39 * lngR, lngA).Resize(, 31).Interior.Pattern = xlNone
Next lngR
lngB = 7 - (Cells(10, 6) - 2) Mod 7          ' Länge 1. Woche
lngF = Fix(((Cells(10, 6) - 2) Mod 21) / 7)  ' 1. Farbe
lngT = Application.Count(Cells(10, 6).Resize(, 31)) ' Anz. Tage
For ww = 1 To 6                              ' bis zu 6 Wochen
For lngR = 0 To 2                         ' Färben in 3 Zeilen
Cells(8 + 39 * lngR, lngA).Resize(, lngB).Interior.Color = _
avCol((lngF + 3 - lngR) Mod 3)
Next lngR
lngA = lngA + lngB                        ' nächste Startspalte
If lngA > 5 + lngT Then Exit For
' Länge nächste Woche
If lngB > 6 - lngA + lngT Then lngB = 6 - lngA + lngT Else lngB = 7
lngF = lngF + 1                           ' nächste Farbe
Next ww
End Sub
Und hier die (xl2010-)Mappe, in der ich dir auch diverse Formeländerungen vorschlage:
https://www.herber.de/bbs/user/77824.xlsm
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
@Erich G. - Freue mich riesig...
06.12.2011 12:30:53
Matthias
Hallo Erich G..
.., ganauso sollte die Lösung sein, jetzt bin ich dabei und versuche das mal alles noch zu verstehen.
Ich stecke ja noch in den Anfängen mit VBA und muss erst die Denkweise eines Aufbaus kennen lernen.
Gruß Matthias
(Aus Naumburg an der"kleinen Elbe")

14 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige