Ich arbeite an einem Makro, das eine visuelle Darstellung der 4 verschiedenen Produktionsphasen eines Produkts, das wir produzieren, bietet. Die Tabelle ist so angelegt, dass sie als linearer Kalender erscheint, der alle 365 Tage des Jahres anzeigt und sie in Kalenderwochen gruppiert. Jede Produktionsphase hat eine andere Farbe. Die vier Bauphasen sind: 1) Montage: 1 Tag (gelb) 2) Erstanalyse: 1 Tag (lila) 3) Tiefenanalyse: 7 Tage (grün) 4) Versand: 1 Tag (rot)Ein Makro, das Einschränkungen in der Planung nicht richtig erkennt
Nr Arbeiten werden an Wochenenden oder Feiertagen in der Einrichtung durchgeführt. Samstage und Sonntage werden durch schwarz gefärbte Zellen dargestellt, während Feiertage durch orangefarbene Zellen mit einem Kreuzmuster dargestellt werden. Das Makro wird entwickelt, um diese Feiertage überspringen die mit folgenden wenn dann Anweisung:
Dim i As Integer
i = Analysis days
for i = 1 to 7
ActiveCell.Select
If Selection.Interior.Pattern = x1CrissCross And Selection.Interior.Color = orange Then
ActiveCell.Offset(0, 1).Select
Else: ActiveCell.Select
End If
If Selection.Interior.Color = black Then
ActiveCell.Offset(0, 2).Select
Else: ActiveCell.Select
End If
Die If Then-Anweisung, die das Makro sagt überspringen Samstag und Sonntag jedes Mal funktioniert. Aber die Aussage, die dem Makro sagt, dass Ferien ausgelassen werden sollen, arbeitet nur einen Teil der Zeit, und wenn die Ferien länger als ein paar Tage dauern (Weihnachtsferien dauern neun Tage), fügt das Makro Produktionsarbeitstage während des Urlaubs ein. Ich habe festgestellt, dass das Kopieren und Einfügen der obigen Anweisungen direkt hintereinander mehrere Male eine schnelle Lösung des Problems bietet. Aber ich bin mir sicher, dass es einen effizienteren Weg dafür geben muss. Kennt jemand eine Art, wie ich das Problem beheben kann, ohne die gleichen Codezeilen mehrfach kopieren und einfügen zu müssen?
Vielen Dank im Voraus!
Das ist ziemlich ehrgeizig^_ ^; – findwindow
Es ist mühsam, es von Hand zu färben, aber das ist viel weniger mühsam als die für ein Makro erforderliche Logik? – findwindow
Ahh, ich *** sehr *** schlagen Sie vor, lesen Sie durch [Wie zu vermeiden '.Select '] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel -vba-macros), erspart Ihnen viele Kopfschmerzen und hilft Ihnen zu lernen, wie VBA funktioniert/denkt. – BruceWayne