22.10.2016, 13:54 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2016, 13:54 von snb.)
Du kannst diese Code überall setzen, weil die Arbeitsblätter mit ihre Codenames benennt (tabelle1 bzw. Tabelle44) sind:
Code:
Sub M_snb() c00 = Tabelle44.Cells(1, 4) y = Weekday(c00, 2) - 1 sn = Tabelle1.Cells(5, 38).Resize(70, 5) ReDim sp(1 To UBound(sn), 1 To Day(DateSerial(Year(c00), Month(c00) + 1, 0)))
For j = 1 To UBound(sn) For jj = 1 To 5 If LCase(sn(j, jj)) = "x" Then For jjj = 0 To 5 If jj + 7 * jjj <= UBound(sp, 2) And jj - y > 0 Then sp(j, jj + 7 * jjj - y) = "x" Next End If Next Next
Tabelle44.Cells(576, 2).Resize(UBound(sp), UBound(sp, 2)) = sp End Sub
Wenn im Codemodule des Arbeitsblattes Tabelle44; dan reicht:
Code:
Sub M_snb() c00 = Cells(1, 4) y = Weekday(c00, 2) - 1 sn = Tabelle1.Cells(5, 38).Resize(70, 5) ReDim sp(1 To UBound(sn), 1 To Day(DateSerial(Year(c00), Month(c00) + 1, 0)))
For j = 1 To UBound(sn) For jj = 1 To 5 If LCase(sn(j, jj)) = "x" Then For jjj = 0 To 5 If jj + 7 * jjj <= UBound(sp, 2) And jj - y > 0 Then sp(j, jj + 7 * jjj - y) = "x" Next End If Next Next
Cells(576, 2).Resize(UBound(sp), UBound(sp, 2)) = sp End Sub
Welche Monat wird nun gelesen aus [D1]
NB. Verzichte auf 'merged cells'.
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28 • Daniel Albert
du hast mich glaube ich falsch verstanden. Die Monate werden doch über USerform und dem Marko dahinter über die Vorlage erstellt, sprich die Vorlage wird kopiert der Arbeitsblattname wird umgeschrieben je nachdem welcher Monat ausgewählt wird. Dann wird dieser Monat mit den Formeln belegt. Somit kann der Code doch nicht bei einem Tabellenblatt hinterlegt werden was es noch nicht gibt. Dein Code funktioniert aber einwandfrei mit Activesheet. Also ich bin zufrieden :)
Hallo, so jetzt habe ich doch ein Problemchen. In der Tabelle sind ja auch Samstag und Sonntag drin. Jetzt werden die x auch an Wochenenden eingetragen was ja nicht rchtig ist. Jetzt habe ich mir die 3 Codes von euch nochmal angeschaut. Komischerweise funktioniert der Code von Fennek perfekt aber nur in der Testtabelle. In meiner eigenen nicht, verstehe absolut nicht warum. Kann mir bitte jemand Helfen. ich bin total überfordert und wir brauchen aber für kommende Woche die Liste da ich die Vorbuchungen am 5ten abbuchen muss :(
ich habe mir den Code von Fennek angesehen und sage dazu, alle Achtung wenn er klappt, ich verstehe ihn nicht.
Dafür ist mri etwas sehr amüsantes aufgefallen. In der Datei, die nicht funtioniert, ist ein Blatt für den Monat "April" drin. Die andere Datei hat zwei Blaetter für Oktober/ November. Da funktioniert das Makro tadellos. Ich habe dann das Blatt Oktober in deine Originaldatei kopiert, dann funktioniert es auch. Liegt das nur am richtigen Tabellenblatt???
Bei Öffnen bekam ich eine Fehlermeldung von "Auto-Open", weil der Tagesplan für Löwen und Tiger fehlt.
mfg Gast 123
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • Daniel Albert
scheinbar liegt es an Tabellenformatierung die in der Testtabelle geändert wurden. Die Tabelle aktive Mitglieder habe ich jetzt nicht kopiert sondern den Inhalt übertragen und siehe da der Code funktioniert noch, sehr komisch.
OK somit hat sich das Problem scheinbar gelöst. Ich muss noch einige Tabellen anpassen und melde mich dann
in der Datei, in der ich vor Tagen meinen Makro entwickelt habe, stand im Sheet "November 2016" in der Zeile 574/575 in Datum. In der gestern Abend hochgeladenen Datei ...Testphase steht an gleicher Stelle eine Zahl (1-31). Da ich für die Zuordnung der Spalten die Funktion "Wochentag" nutze, ist klar, warum es in der einen Version klappt und nicht in der anderen.
Ich weiss, dass es oft nicht klappt, aber für die Hilfe ist es notwendig, dass die Beispieldatei auch in solchen Formats-Fragen mit der Originaldatei übereinstimmt.
mfg
(PS: ich besuche das Forum mit einem Netbook, mit einer xl-Version OHNE vba. Damit speichere ich xlsm-Datein sofort als xlsx. Diese Datei ohne Makros lade ich dann auf einem PC mit vba. Eine Verknüpfung mit Makros des Fragestellers bekomme ich so nicht zustande)
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • Daniel Albert
Hallo Fennek, danke für die Erklärung. Ich nehme zu Anfang immer die Originalmappe und entferne alle Tabellen die mit dem Thema nichts zu tun haben und die Daten der Mitglieder. Warum dieser Fehler entstanden ist weiß ich nicht aber ich bin auf einem guten Weg bis heute Abend alle Tabellen neu formatiert zu haben und bis jetzt funktioniert noch dein Code. Ich denke auch der von snb wird funktionieren weil wahrscheinlich auch hier es an den Formatierungen lag.
25.10.2016, 09:50 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2016, 09:50 von Fennek.)
Hallo,
noch schöner: in der Datei, in der ich entwickelte, stand in "aktive Mitglieder" der Wochentag in Zeile 3, in der Datei von gestern in Zeile 4.
Der folgende Code passt in der Datei von gestern "Testphase", nur es fehlt eine Lösung das sheet des jeweiligen Monats automatisch zu erkennen. (z.B. "activesheet" oder sheets(sheets.count))
Code:
Sub Kinder() With Sheets("aktive Mitglieder") For i = 5 To 70 'Schleife alle Kinder Blatt Aktive Mitglieder For j = 0 To 4 'Essensbestellung Sheet Aktive Spalte AL:Ap If .Cells(i, "AL").Offset(, j) = "x" Then WO = .Cells(4, "AL").Offset(, j) '4 anstelle von 3 Debug.Print .Cells(i, "C"), WO Call Bestellungen(i, WO) End If
Next j Next i End With End Sub
Sub Bestellungen(ByVal i As Integer, ByVal WO As String) With Sheets("April 2016") Debug.Print "Nov: ", .Cells(i, "A").Offset(576 - 5).Value, Format(.Cells(575, "B"), "DDD") For j = 2 To 32 If Format(.Cells(575, j), "DDD") = WO Then .Cells(i, j).Offset(576 - 5) = "x" Next j End With End Sub
mfg
Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:1 Nutzer sagt Danke an Fennek für diesen Beitrag 28 • Daniel Albert
Echt komisch da hat es was zerhaut, dass mit den geänderten Formatierungen ist mir ja gestern auch aufgefallen. Warum das passiert ist kann ich nicht sagen ist mir aber zuerst nicht aufgefallen. Das Thema Aktive Tabelle habe ich schon gelöst. Dein Code wird direkt ausgeführt nachdem die neue Monatstabelle erstellt wurde. Klappt einwandfrei in der Testtabelle. un muss ich die Formatierungen noch anpassen. Wie gesagt melde mich danke.
@snb- ich verstehe es leider noch nicht was du mir damit sagen willst, soweit bin ich in Excel noch lange nicht. Dein Code funktioniert ja auch und auch da konnte ich mir der jeweiligen aktiven Tabelle arbeiten. Melde mich heute Abend