Seite 2 von 3 ErsteErste 1 2 3 LetzteLetzte
Ergebnis 11 bis 20 von 28
  1. #11
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    204
    Schön, dass dich der Ehrgeiz packt. Viel Erfolg!

    Das Formatieren der Zellen auf Datum könnte man natürlich auch noch in den Makro packen.

    Grüße, Andreas

  2. #12
    Registriert seit
    29.08.2007
    Beiträge
    152
    Hallo Andreas,
    Es hat geklappt - ich konnte die Anpassung machen. Als Anhang das neue Makro. Wie du feststellen wirst, habe ich vor allem die Spaltenanordnung geändert wie auch den Name der Quelldatei.
    Bis dato musste ich die Originalsdatei die von der Geschäftstelle für meine Freelanceeinsätze als Reiseleiter mit mehrern Schritten aufbereiten. (Spalten löschen, Formatieren, etc.) Dein Suppermakro konnte ich nun so anpassen, dass ich direkt diese Originaldatei verwenden kann.

    Die Tabelle "Teilnehmer" ist Bestandteil einer Mappe mit mehreren Tabellen, darunter auch "Orig-Bordmanifest". Zudem habe rechts der Spalten von Teilnehmer aus dem Testfile noch weitere Spalten um Teilnehmer für Ausflüge zu buchen. So habe ich mir eine "Mastermappe" gemacht mit leeren, aber wo nötig bereits korrekt formatierten Zellen. Nach Ausführen des Makros speichere ich dann die ganze Mappe unter dem Datum der Reise und lösche anschliessend wieder die Inhalte in Teilnehmer und Orig-Bordmanifest.

    Es hat nun noch zwei ganz kleine Schöhnheitsfehler, die eigentlich auch gut händisch nachgearbeitet werden könnten; aber eben - der Apetit kommt mit dem Essen.

    1. Spalte Anrede; zeTe 5 resp. zeMa 3
    Grundsätzlich ist es ja richitig wenn bei doppelten Werten beim Zusammenführen einer der beiden gelöscht wird - ausser in dieser Spalte (Teilnehmer 5). In dieser zähle ich nämlich mit einer Funktion in der Spalte PAX die Anzahl der vorkommenden "Frau" und "Herr" um das Total der Teilnehmer am Ende der Tabelle auzugeben. Also wäre es super, wenn in dieser Spalte (und nur in dieser) die Werte ohne Löschen doppelter Werte zusammen geführt werden könnten.
    Als Laie ist es mir völlig schleierhaft wo genau die Anweisung ist, für das Löschen der doppelten Zellwerte.

    2. Spalte Tisch; zeTe 11, zeMa 13
    Im Original der Geschäftstelle hat es an der dritten Stelle jeweils noch einen Kleinbuchstaben, Bereich a - f. Dies um beim Einpflegen der Buchungen nicht mehr Gäste an einen Tisch zu setzen als es Plätze hat. Dieses Tischplatzdetail brauche ich jedoch für meine Arbeit nicht.
    Also wäre es elegant, wenn ganz am Anfang des Makros dieser Kleinbuchstaben au zeMa gelöscht würde und zwar in der Tabelle "Org-Bordmanifest" und nicht erst beim Übertrag in "Teilnehmer". Es spielt absolut keine Rolle, wenn die Datei Bordmanifest anschliessend ohne diese Tischdetail übrig bleibt, bzw. beim Schliessen der Mappe gespeichert wird. Um gewappnet zu sein für ev. grössere Tische in Zukunft würde ich den Löschrange auf a - m erweitern. Übrigens, dieser Kleinbuchstaben ist immer an dritter Stelle, aber es kann auch sein, dass im Gegensatz zum Testfile, das du ja schon hast, statt A2, oder D4 auch eine zweistellige Ganzzahl vorkommt. (Ich vermute aber, dass das für dieses Makro keine Rolle spielt - es ist ja immer das dritte Zeichen von links das gelöscht werden soll.

    Am Schluss noch eine kleine Frage - mit welchen Texteditor arbeitest du? Ich habe Notepad++ verwendet, konnte aber die Bemerkungen nicht mit einer anderen Farbe formatieren.

    Ich bin richtig glücklich über das bis jetzt ereichte und danke dir einmal mehr für deine grosse Unterstützung.

    Liebe Grüsse
    Smily44
    Angehängte Dateien Angehängte Dateien

  3. #13
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    204

    Großes Lob!!

    Hi Smily,

    da hast du dich ja richtig ins Zeug gelegt. Kompliment. Sogar Kommentare hast du eingefügt. Das predige ich zwar immer, aber selber bin ich meist zu faul. Da muss ich echt noch an mir arbeiten.
    Zu deinen Fragen:
    1. Gelöscht wird in meinem Makro eigentlich gar nichts. Anders herum: Es wird nicht alles kopiert.
    Die Zeile
    Code:
    Te.Cells(zeTe, 5) = .Cells(zeMa, 3)     ' Anrede, ok
    kopiert die Anrede für den ersten Kabinen-Bewohner in die Teilnehmer-Liste. Weiter unten steht dann
    Code:
    If .Cells(zeMa, 3) <> .Cells(zeMa + 1, 3) Then Te.Cells(zeTe, 5) = Te.Cells(zeTe, 5) & vbLf & .Cells(zeMa + 1, 3)
    Dort wird vor dem Then überprüft, ob in der Master-Tabelle eine Zeile unter der aktuellen etwas anderes steht (<> heißt ungleich) als in der aktuellen Zeile. Nur dann wird der Teil der Zeile hinter dem Then ausgeführt: Die aktuelle Zelle in der Teilnehmerliste wird ergänzt durch einen Zeilenvorschub (vbLf) und die Zelle unter der aktuellen aus der Master-Tabelle.
    Wenn du also im Fall der Anrede immer beide Einträge haben willst, musst du einfach nur den hinteren Teil der Zeile verwenden, also die Abfrage der Bedingung löschen. Die Zeile heißt dann also
    Code:
    Te.Cells(zeTe, 5) = Te.Cells(zeTe, 5) & vbLf & .Cells(zeMa + 1, 3)
    2. Ist es wichtig, dass der Tisch-"Anhang" (a-f) in "Org-Bordmanifest" gelöscht wird? Warum reicht es nicht, wenn a-f nicht mit nach "Teilnehmer" kopiert wird?
    Wenn du es wirklich in "Org-Bordmanifest" löschen möchtest ginge das so:
    Füge zwischen den Zeilen
    Code:
    With Ma
    und
    Code:
    zeMa = 2
    noch eine Schleife ein:
    Code:
    zeMa = 2
    While Not IsEmpty(.Cells(zeMa, 13))
          .Cells(zeMa, 13) = Left(.Cells(zeMa, 13), 2)
           zeMa = zeMa + 1
    Wend
    Damit werden vor der ganzen Kopier-Aktion in der Tisch-Spalte immer nur die 2 linken Zeichen behalten.

    Wenn es reicht, die "Org-Bordmanifest" unverändert zu lassen und die Kürzung auf 2 Zeichen beim Kopieren zu machen, ginge das so:
    Erweitere die Zeile
    Code:
    Te.Cells(zeTe, 11) = .Cells(zeMa, 13)
    mit
    Code:
    Te.Cells(zeTe, 11) = Left(.Cells(zeMa, 13), 2)
    und eweitere die Zeile
    Code:
    If .Cells(zeMa, 13) <> .Cells(zeMa + 1, 13) Then Te.Cells(zeTe, 11) = Te.Cells(zeTe, 11) & vbLf & .Cells(zeMa + 1, 13)
    mit
    Code:
    If .Cells(zeMa, 13) <> .Cells(zeMa + 1, 13) Then Te.Cells(zeTe, 11) = Te.Cells(zeTe, 11) & vbLf & Left(.Cells(zeMa + 1, 13), 2)
    Noch zu deiner Frage nach dem Editor: Einen Extra-Editor benutze ich eigentlich nur ganz selten, z.B. um Code-Schnipsel zwischenzuspeichern, bevor ich eine Mappe schließe. Dafür reicht mir der stink-normale Notepad.
    Das mit den Farben macht ja der VBA-Editor. Die kannst du sogar nach deinem Geschmack einstellen: Extras - Optionen - Editorformat.

    So, ich hoffe ich konnte wieder ein Bisschen weiter helfen. Wenn weitere Fragen kommen: Nur zu.

    Grüße, Andreas

  4. #14
    Registriert seit
    29.08.2007
    Beiträge
    152
    Hallo Andreas,
    Es ist wirklich toll wie du dich engagierst mir zu helfen - vielen Dank für diese Ergänzungen.

    Die Ergänzung für die Spalte Anrede klappt - es werden alle Werte übernommen.

    Mit dem dritten Zeichen in Spalte Tisch (zeTe 11; zeMA 13) happerts aber. Zuerst versuchte ich die Variante ohne Löschung im zeMa. Das funktionierte jedoch nur beim ersten gefundenen Eintrag, der zweite Eintrag (bei gleicher Kab-Nr) war dann wieder mit drittem Zeichen. Kann es daran liegen dass die Löschung des dritten Zeichens nur in der Abfragezeile gemacht wird? Wenn ja, unterscheidet sich natürlich dieser Eintrag von der nächsten Zeile, da ja dort das besagte Zeichen noch nicht gelöscht ist, also der Eintrag <> ist.

    Die Variante mit Löschen des dritten Zeichens direkt in der zeMa bevor die Daten für die Tabelle Teilnehmer eingelesen werden, habe ich soweit ich das sehen kann korrekt übernommen (mit Copy&paste). Aber irgend etwas habe wahrscheinlich doch falsch gemacht - die Löschung in zeMa wird nicht gemacht. Es erscheint auch keine Fehlermeldung wenn das Makro abgearbeitet wird.

    Was ich eher per Zufall auch enddeckt habe ist, dass die Tabelle zeMa vor dem Auslesen für zeTe korrekt sortiert sein muss; 1. Ebene Kab. (zeMa 10) 2. Ebene Anrede (zeMa 3). Ohne diese Sortierung klappt die korrekte Erstellung von Teilnehmer nicht, was ja eigentlich klar ist. Im bisherigen Testfile war das zufälligerweise schon richtig so,

    Auch wichtig ist, dass die Formatierung der Datumsspalten in beiden Tabellen korrekt ist (dd.mm.yyyy). Also wäre es doch nützlich, wenn diese Formatierung auch noch am Anfang des Makros eingebaut werden könnte.

    Wir sind kurz vor dem Ziel und bald hast die wieder Ruhe von mir!

    Beste Grüsse
    Smily44
    Angehängte Dateien Angehängte Dateien

  5. #15
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    204
    Hallo Smily
    Zitat Zitat von smily44 Beitrag anzeigen
    Mit dem dritten Zeichen in Spalte Tisch (zeTe 11; zeMA 13) happerts aber. Zuerst versuchte ich die Variante ohne Löschung im zeMa. Das funktionierte jedoch nur beim ersten gefundenen Eintrag, der zweite Eintrag (bei gleicher Kab-Nr) war dann wieder mit drittem Zeichen. Kann es daran liegen dass die Löschung des dritten Zeichens nur in der Abfragezeile gemacht wird? Wenn ja, unterscheidet sich natürlich dieser Eintrag von der nächsten Zeile, da ja dort das besagte Zeichen noch nicht gelöscht ist, also der Eintrag <> ist.
    Jetzt wird es für mich langsam etwas Stochern im Nebel, weil ich deine echte Mappe nicht da habe und also nichts testen kann. Vielleicht kannst du ja doch noch mal was hochladen.
    Ich dachte eigentlich, dass diese Variante hätte funktionieren sollen: Im Master wird ja nichts verändert. Deswegen müsste die Abfrage, ob die folgende Zeile <> ist, weiterhin funktionieren. Aber wie gesagt, ich kann das so nicht testen.

    Zitat Zitat von smily44 Beitrag anzeigen
    Die Variante mit Löschen des dritten Zeichens direkt in der zeMa bevor die Daten für die Tabelle Teilnehmer eingelesen werden, habe ich soweit ich das sehen kann korrekt übernommen (mit Copy&paste). Aber irgend etwas habe wahrscheinlich doch falsch gemacht - die Löschung in zeMa wird nicht gemacht. Es erscheint auch keine Fehlermeldung wenn das Makro abgearbeitet wird.
    Auch das ist mir ohne Test unverständlich. Es sei denn, ich habe mich vertan mit den Spalten. Bitte überprüfe noch mal alle Kopierereien im Makro, ob da auch die richtigen Spaltennummern benutzt werden.

    Zitat Zitat von smily44 Beitrag anzeigen
    Was ich eher per Zufall auch enddeckt habe ist, dass die Tabelle zeMa vor dem Auslesen für zeTe korrekt sortiert sein muss; 1. Ebene Kab. (zeMa 10) 2. Ebene Anrede (zeMa 3). Ohne diese Sortierung klappt die korrekte Erstellung von Teilnehmer nicht, was ja eigentlich klar ist. Im bisherigen Testfile war das zufälligerweise schon richtig so,
    Ja, da kommen wir dann zu einem anderen Thema. Ich war bisher davon ausgegangen (weil das sowohl in deiner ersten als auch in deiner zweiten Test-Datei so war), dass
    1. immer die zwei Leute, die eine Kabine belegen im Master direkt untereinander stehen.
    2. Keine Leerzeilen irgendwo dazwischen sind.
    Wenn es in Zukunft doch den einen oder anderen Fall geben sollte, muss der Makro komplett umgebaut werden. Aber dazu würde ich echtes Testmaterial brauchen.

    Zitat Zitat von smily44 Beitrag anzeigen
    Auch wichtig ist, dass die Formatierung der Datumsspalten in beiden Tabellen korrekt ist (dd.mm.yyyy). Also wäre es doch nützlich, wenn diese Formatierung auch noch am Anfang des Makros eingebaut werden könnte.
    Ich gehe mal davon aus, dass die Spalten für die Geburtsdaten noch stimmen: Im Master Spalte D und in Teilnehmer Spalte F. Wenn das stimmt, schreibe in den Code unter die Zeilen
    Code:
    Set Ma =...
    Set Te =...
    noch die Zeilen
    Code:
    Ma.Columns("D:D").NumberFormat = "m/d/yyyy"
    Te.Columns("F:F").NumberFormat = "m/d/yyyy"
    Zitat Zitat von smily44 Beitrag anzeigen
    Wir sind kurz vor dem Ziel
    Da bin ich mir noch nicht so sicher ...

    Grüße, Andreas

  6. #16
    Registriert seit
    29.08.2007
    Beiträge
    152
    Hallo Andreas,
    Vielen dank für das Feedback,
    Als Anhang sende ich dir eine neue Musterdatei die der "scharfen" Variante gleich kommt (Umfang) in der Struktur aber dem ersten Testfile entspricht (ausser, dass ich auf die Übename der Spalte "Kategorie" aus Ma verzichte. Die Daten habe ich soweit wie möglich verfälscht/anonymisiert.

    Die Formatierung der Datumsspalte habe ich eingefügt, allerdings in der Variante d/mm/yyyy - scheint zu klappen.

    Das Zusammenführen der Daten in Te erfolgt immer auf Basis der gleichen Kabinennummer. Deshalb muss auch die MA-Datei in den Ebenen 1. Kabnummer (MA10) und 2. Ebene Anrede (MA3) sortiert werden. Das Makro muss also nicht komplett neu überdacht werden.

    Nun bin ich gespannt was deine Analyse ergibt betr. Löschung des dritten Zeichens - ist ja wahrscheinlich mein Fehler, allerdings habe ich die Eingabe per copy&paste aus deiner Antwort übernommen.

    Liebe Grüsse
    Smily44
    PS: Ich hoffe dass das Hochladen klappt. Habe mal gelesen dass Excelfile nur ergänzt werden mussen mit .txt, weil das Forum ja keine originalen Exceldateien akzeptiert.
    Angehängte Dateien Angehängte Dateien

  7. #17
    Registriert seit
    29.08.2007
    Beiträge
    152
    nein, das Hochladen hat offenbar so nicht geklappt.
    Also hier die gezippte variante.
    Angehängte Dateien Angehängte Dateien

  8. #18
    Registriert seit
    04.08.2015
    Ort
    in der Geburtsstadt der Gebrüder Grimm
    Beiträge
    204
    Hallo Smily,
    Zitat Zitat von smily44 Beitrag anzeigen
    eine neue Musterdatei die der "scharfen" Variante gleich kommt (Umfang) in der Struktur aber dem ersten Testfile entspricht (ausser, dass ich auf die Übename der Spalte "Kategorie" aus Ma verzichte.
    Das habe ich nicht verstanden. Sind die Spalten in der neuen Datei so, wie sie bei dir in deiner "scharfen" Datei sind, ja oder nein?
    Ich gehe jetzt mal von "ja" aus.

    Zitat Zitat von smily44 Beitrag anzeigen
    Das Zusammenführen der Daten in Te erfolgt immer auf Basis der gleichen Kabinennummer. Deshalb muss auch die MA-Datei in den Ebenen 1. Kabnummer (MA10) und 2. Ebene Anrede (MA3) sortiert werden. Das Makro muss also nicht komplett neu überdacht werden.
    Ich verstehe das so (und gehe im Makro davon aus), dass in der Orig-Bordmanifest die Leute aus einer Kabine immer direkt untereinander stehen, richtig?

    Das mit dem Löschen des 3 Zeichens bei der Tischnummer konnte in deiner Datei nicht klappen: In der Beispieldatei die du vorher hochgeladen hattest war in jeder Zeile eine Tischnummer vorhanden. Deswegen war ich im Makro davon ausgegangen, dass das immer so ist. Das Makro hat also die Tischnummern ab Zeile 2 gekürzt, so lange, bsi eine leere Zelle gefunden wurde.
    Ich deiner jetzigen Datei ist gleich der Tisch in Zeile 2 leer, und das Makro macht da Schluss mit Kürzen.
    Deswegen lass es mich hier bitte noch mal wiederholen: Wenn du Beispieldateien hochlädst, dann müssen die auch so aufgebaut sein, wie die Datei, die du später wirklich benutzt. In Makros wird oft z.B. nach leeren Zellen als Endkriterium von Schleifen gesucht. Oder das Makro greift auf bestimmte Spalten zu. Wenn dann in einer Beispieldatei die Spalten anders sind als in der echten, oder wenn in der echten leere Zellen zwischendurch stehen, im Beispiel aber nicht, dann kann das nix werden.
    Ich habe jetzt den Makro so umgebaut, dass er die Tischnummern bis zur letzten gefüllte Zeile kürzt, egal ob Leerzellen dazwischen sind oder nicht.
    Mach mal einen Test und sag Bescheid, ob's läuft.

    Gruß, Andreas

    PS: Falls "Orig-Bordmanifest" im Ausgangszustand nicht sortiert ist, könnte das natürlcih auch der Makro übernehmen.
    Angehängte Dateien Angehängte Dateien

  9. #19
    Registriert seit
    29.08.2007
    Beiträge
    152
    Guten Tag Andreas,
    Vielen Dank - ich glaube wir haben es!

    Ja die Spaltenstruktur ist wie gehabt, ausser, dass ich die Spalte Ma9 (Kategorie) nicht mehr in Te übertrage.

    Und ja, es ist so, dass die Leute die in der gleichen Kabine sind auch direkt unter einander stehen in Ma. Aus diesem Grunde muss ja Ma sortiert werden bevor das Makro abläuft. 1. Ebene Spalte J (Kabine), 2. Ebene Spalte E (Anrede).

    Das Makro macht nun genau das was ich erwarte und brauche. Allerdings hat es einen mit unerklärlichen Schönheitsfehler. Wenn die Te "Teilnehmer" leer ist, bzw. nur die die erste Zeile mit den Spaltenüberschriften ausgefüllt ist, sind die Zeilen 71 - 85 nach Ausführen des Makros leer, auch keine Ramen, was ja korrekt wäre. Aber ab Zeile 86 sind alle Zellen A - M bis am Ende des Tabellenblattes mit Rahmen versehen. Mit Strg - Shift - * wird jedoch der korrekte Bereich A1 - M67 markiert.
    Ich bezweifle, dass das mit dem Makro zu tun hat, aber hast du eine Idee an was das sonst noch liegen könnte?
    Da ich am Ende des ausgefüllten Bereiches (Zeile 70) die Spalte I Pax summiere ist es etwas verwirrlich, wenn unter dem Bereich die Tabelle weiter geht mit umramten Zellen.

    Aber sonst - wie gesagt - ist das Marko nun fertig.

    Ein Mal mehr ganz herzlichen Dank für deine grosse Unterstützung.

    Liebe Grüsse
    Smily44

  10. #20
    Registriert seit
    29.08.2007
    Beiträge
    152

    Entwarnung

    Hallo Andreas,

    Ich habe das ganze nun nicht mehr mit dem Testfile gestestet sondern mit einer Originaldatei wie ich sie in Zukunft verwenden werde. In dieser Mappe hat alles bestens funktioniert wie gewünscht.

    Also hatte ich kürzlich doch recht - wir haben das Ziel erreicht und du bist mich los.

    Liebe Grüsse
    Smily44

Seite 2 von 3 ErsteErste 1 2 3 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •