Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Monatliche Essenbestellung aus Tabelle auslesen
#11
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'.


Angehängte Dateien
.xlsb   __Essen snb.xlsb (Größe: 130,62 KB / Downloads: 8)
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Daniel Albert
Antworten Top
#12
Hallo Snb,

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 :)
Antworten Top
#13
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 :(


Angehängte Dateien
.xlsm   Essens und Mitgliederliste ab August 2016 Testphase.xlsm (Größe: 321,42 KB / Downloads: 8)
.xlsm   Hier geht es aber warum.xlsm (Größe: 385,67 KB / Downloads: 8)
Antworten Top
#14
Hallo Albert,

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:
  • Daniel Albert
Antworten Top
#15
Guten Morgen,

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
Antworten Top
#16
Hallo,

ok, ein Versuch der Erklärung:

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:
  • Daniel Albert
Antworten Top
#17
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.

Danke vorerst
Antworten Top
#18
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:
  • Daniel Albert
Antworten Top
#19
Und es gab noch immer 'merged cells'. :(

'Sructuring precedes coding'
Antworten Top
#20
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste