Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

2 Multipages in einer Userform

Forumthread: 2 Multipages in einer Userform

2 Multipages in einer Userform
21.06.2021 15:46:07
Markakus
Hallo zusammen,
ich möchte gerne ein Wartungsprotokoll mit Userformen erstellen.
In einer der Userformen will ich mit 2 Multipages Aufgaben nach Erledigung abfragen. Eine Multipage soll auf jeder Page eine Bild enthalen, auf dem der Ort der Aufgabe mit der Aufgabennummer markiert ist. In der Anderen Multipage soll die Erledigung der Aufgabe abgefragt werden. Die Aufgaben und Bilder sollen aus einer Exceltabelle (Wartungsliste) eingelesen werden. Nach Beantwortung der Fragen soll das Ergebnis in eine andere Exceltabelle (Wartungsprotokoll) eingetragen werden.
Bisheriger Entwurf ohne 2. Multipage:
https://www.herber.de/bbs/user/146704.xlsm
Problem:
Wenn ich nun 2 Multipages in einer Userform habe kommt bei der Zeile "Me.MultiPage1.Pages.Add" eine Fehlermeldung und Excel stürzt ab.
Es geschiet nicht wenn, es nur eine Mutlipage ist.
Ist es nicht möglich 2 Multipages in einer Userform zu generieren?
Was ist mein Fehler?
https://www.herber.de/bbs/user/146699.xlsm
Mit freundlichen Grüßen
Anzeige

25
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ich hab mal getestet ...
21.06.2021 17:37:50
Matthias
Hallo
In einer neuen Datei fuktioniert das ohne Probleme.
(nicht in Deiner Datei getestet).
Gruß Matthias
AW: ich hab mal getestet ...
21.06.2021 18:31:45
Markakus
Hallo Matthias,
es funktioniert bei mir auch nicht bei einer neuen Excel-Datei bei der ich die 2 Multipage per hand kreiere (Multipage1, Mutipage2) unt unter
folgendes unter UserForm1 schreibe:

Private Sub UserForm_Initialize()
Me.MultiPage1.Pages.Add
End Sub
Es kommt dann folgender Fehler:
Userbild
Anzeige
AW: 2 Multipages in einer Userform
21.06.2021 18:09:57
Yal
Hallo Markus,
sportler-Weisheit: wenn etwas nicht gut tut, tue das nicht!
Aber: http://www.vbaexpress.com/forum/archive/index.php/t-39219.html
Es hat aber bei mir nicht funktioniert.
Im allgemein ist die Frage, warum das dynamische Erzeugen von zusätzlichen Multipage notwendig ist. Man könnte als alternative 10 MP per Hand instanzieren und mit Visible= True/False die auswählbar machen oder nicht.
Ich habe selten solchen multiplen Form-Abfrage gehabt, aber jedemal tendierte die günstigste Version in Richtung einer Assistant-Modus. ein einzige Formular, dessen Inhalte nach Schritte der Bearbeitung befüllt wurde.
Viel Erfolg
Yal
Anzeige
AW: 2 Multipages in einer Userform
23.06.2021 19:01:13
Mullit
Hallo,
mal kurz zw.-durch, bei mir klappt tatsächl. der Vorschlag aus Deinem Link mit den MultiPages in einem Frame:
https://www.herber.de/bbs/user/146751.xlsm
Gruß, Mullit
AW: 2 Multipages in einer Userform
23.06.2021 22:03:01
Markakus
Bei mir funktioniert es mit deiner Version auch:
Das heist,
für Pages in einer Userform die 2 Multipages enthält, können per VBA dynamisch hinzugefügt werden wenn:
  • die Multipages in einem Frame integriert sind
  • eine Multipage in einem anderen Multipage in einem Frame integriert ist (verschachtelt)

  • https://www.herber.de/bbs/user/146754.xlsm
    Es funktioniert nicht wenn:
  • 2 Multipages ohne Frame in der Userform stehen
  • jeweils eine Multipage in 2 unterschiedliche Frames stehen

  • Beim rumspielen ist mir aufgefallen, dass die Me.Multipage1.Pages.Add() folgende Eigenschaften hat.
  • bstrName
  • bstrCaption
  • IIndex

  • allerdings konnte ich es nur zum laufen bringen wenn ich in die Klammern "BeispielPageName" oder bstrName:= "BeispielPageName" eintrage. Dabei bekommt die Caption den gleichen Text wie die Namen-Eigenschaft.
    Wenn ich bei den anderen zwei Eigenschaften was eintrage kommt der Fehler: Fehler beim Kompilieren: Erwartet: =
    Wie muss ich die Eigenschaften ansprechen, dass der Fehler nicht kommt?
    Grüße
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    25.06.2021 23:06:49
    Mullit
    Hallo,
    ja, ich hab auch mit dem letzten Index Parameter Schwierigkeiten, in der M$-Doku find ich da auch so schnell nix..ergo: lass die Parameter-Bezeichner in dem Fall einfach weg...;-)
    Übrigens gibt die .Add-Methode auch direkt ein Page-Objekt mit allen Eigenschaften zurück, dem kannst Du dann bspw. wieder eine Textbox o.ä. hinzufügen . An die Events kommst Du dann aber nur per Klassenprogr., da die Objekte ja 'On the Fly' zur Laufzeit generiert werden. Hier nochmal als Bsp.:
    https://www.herber.de/bbs/user/146804.xlsm
    Gruß, Mullit
    Anzeige
    AW: 2 Multipages in einer Userform
    26.06.2021 15:13:00
    Mullit
    Hallo nochmal,
    so hab jetzt den Index-Parameter: kl. 'L' und kl. 'i' ist das Zauberwort, ansonsten mußt Du immer wenn einen, dann alle Parameterbez. verwenden und mit := zuweisen:
    
    With MultiPage1
    Set objPage = .Pages.Add(bstrName:="BeispielPageName", bstrCaption:="MyPage1", lindex:=0)
    '...
    
    Gruß, Mullit
    Anzeige
    AW: 2 Multipages in einer Userform
    01.07.2021 15:09:08
    Markakus
    Hallo Mullit,
    danke für den Tipp,
    Die Vorschau gibt dabei aber ein wie ich finde missverständlichen Vorschlag ab zu lindex
    Userbild
    Grüße
    AW: 2 Multipages in einer Userform
    26.06.2021 15:30:21
    Mullit
    ...ach ja hat ich noch vergessen, zu Deinem:
    
    Es funktioniert nicht wenn:
    jeweils eine Multipage in 2 unterschiedliche Frames stehen
    
    Es geht übrigens wieder, wenn Du die beiden MultiPages + Frame in ein gemeinsames 'Parent-Frame' packst...don't ask me why...;-):
    https://www.herber.de/bbs/user/146807.xlsm
    Gruß, Mullit
    Anzeige
    AW: 2 Multipages in einer Userform
    21.06.2021 20:44:35
    Daniel
    Hi
    also bei mir funktioniert deine Datei, wenn ich die zusätzlichen Blätter auf der 2. Multipage hinzufüge.
    keine Ahnung, was da für ein Bug dahinter steckt, vielleicht ist es ja ähnlich wie bei Arrays, erweitert werden kann immer die letzte Dimension, so hier vielleicht auch bei Multipages, nur die zuletzt hinzugefügte darf erweitert werden. Aber wie gesagt, nur ne Vermutung.
    ich halt ähnlich wie Yal autmatisch erzeugte Mutipages in Variabler Anzahl auch für überflüssig.
    das Hauptproblem hierbei dürfte die zusätzlich erzeugten Steuerelemente sein, die ja auch irgenwo abgefragt, ausgewertet und vielleicht auch mit einer Makroprogrammierung versehen werden müssen, das alles wird schwierig, wenn diese Elemente erste zur Laufzeit erzeugt werden (was nicht heißen soll, das es nicht möglich ist, aber es ist schwierig und aufwendig).
    wenn davon auszugehen ist, dass die hinzugefügten Seiten alle gleich aussehen (gleiche Steuerelemente an gleicher Position), dann ist es einfacher, auf die Multipage zu verzichten und nur eine einzige Seite anzulegen.
    Statt der Multipage nimmt man dann den TabStrip oder eine Combobox, um die "Seiten" auszuwählen.
    Statt einem echten Seitenwechsel tauscht man dann aber nur die Inhalte der der Steuerelemente aus, entsprechen dem gewählten Element.
    eine echte Multipage ist nur dann sinnvoll, wenn jede Seite anders aussieht und anders aufgebaut ist.
    Gruß Daniel
    Anzeige
    AW: 2 Multipages in einer Userform
    21.06.2021 21:42:29
    Zwenn
    Hallo Markakus,
    bei mir wird Deine Excel-Datei einfach ganz ohne Meldung geschlossen, wenn ich die UserForm ausführe. (Excel 2016 32 Bit, Windows 10) Selbst hatte ich auch einmal ein Problem mit zwei Multipages, von denen die zweite dynmaisch erzeugt wurde. Was Dir klar sein muss, wenn Du eine Multipage dynamisch erzeugst, musst Du die Events selbst programmieren. Die Excel-Eigenen funktionieren dann nicht. Das gilt für alle dynmaisch erzeugten Steuerelemente. Das geht nur mit Klassenprogrammierung und erzeugt beim Reindenken erstmal einen Knoten im Kopf. Mir gng es jedenfalls so. Ohne Change-Event wirst Du auch nicht weit kommen.
    Damals hat Nepumuk mir geholfen und es handelte sich "nur" um eine unvollständige Objektreferenz. Mit Nepumuks Tipp lief es wie gewünscht. Deshalb ist das Beispiel hier im Forum und Du kannst einen Blick darauf werfen. Allerdings könnte es bei Deinem angegebenen VBA-Lvl etwas unübersichtlich wirken:
    https://www.herber.de/forum/cgi-bin/callthread.pl?index=1669548
    Was das Anlegen einer Multipage für immer die gleiche Aufgabe angeht, gebe ich Daniel völlig Recht. Gleichartige Datensätze werden in den gleichen Steuerelementen angezeigt, indem die Inhalte der Steuerelemente gewechselt werden.
    Wenn ich Deine Aufgabenstellung richtig verstanden habe, brauchst Du eigentlich gar keine Multipage. Was Du auf zwei Multipages aufteilen willst, gehört doch zu einem Datensatz oder? Ein Bild auf dem der Ort der Aufgabe mit der Aufgabennummer markiert ist (Steuerelement ist ein Image-Control, in dem Das Bild "einfach" getauscht werden kann) und die Möglichkeit, die Erledigung der Aufgabe zu verwalten (wofür ein oder mehrere weitere Steuerelemente gebraucht werden). Diese Erledigung gehört doch jeweils zu genau einem Bild oder?
    Mehrere solcher Datensätze kannst Du in "nested dictionaries" verwalten. Also Scripting.Dicitonaries, die in einem Scripting.Dictionary angelegt werden. Das ergibt eine dynamsiche Datenstruktur. Beim Aufruf der UserForm werden alle für den Aufruf benötigten Datensätze in die Dictionaries geschrieben. Das sind dann genau die Daten, die Du in den Steuerelementen durchschalten willst. Das kann dann z.B. mit einem Scrollbar gemacht werden. Wenn Du auf den OK Button klickst, werden die Inhalte der Dictionaries in die Excel-Tabelle(n) geschrieben. Bei Abbruch wird die UF einfach geschlossen und die Daten verfallen.
    Viele Grüße,
    Zwenn
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 14:56:20
    Markakus
    Hallo Daniel, Yal und Zwenn,
    vielen Dank für eure Hilfe,
    ihr habt recht ich könnte den Bildwechsel jeweils mit dem Register (TapStrip) machen, da meine Form immer gleich bleibt und sich nur jeweils das Bild ändert.
    Würdet Ihr dann die Fragen auch auf den TapStrip legen oder einen extra TapStrip für die Fragen anlegen?
    Soviel ich verstanden habe würdet ihr genügend Tabs per Hand erzeugen und die am Ende nicht für ein Bild benötigten Tabs entweder automatisch löschen oder leer lassen.
    Ich werd mal versuchen ob ich das so selbständig hinbekomme. Ist eine TapStrip zuverlässiger als eine Multipage?
    
    Was Du auf zwei Multipages aufteilen willst, gehört doch zu einem Datensatz oder?
    
    Wie wird denn Datensatz definiert? Ich habe mal die Datenstruktur im folgenden Bild dargestellt:
    Userbild
    Zu jeder Maschine habe ich ca. 10 Bilder (Wartungsort). Zu jedem Wartungsort sind es ca. 10 Aufgaben die zu erledigen sind und abgefragt werden sollen. Tatsächlich variiert aber die Anzahl der Aufgaben und Wartungsorte.
    Die Daten aus der Wartungsliste würde ich nach einer Maschine filtern und sortieren und den Datensatz in ein Array oder in ein Tabellen-Register von Wartungsprotokoll.xlsm schieben. Diesen Datensatz würde man dann auch nur selten ändern. Aus dem Datensatz kann dann der Intervall abgelesen werden, wann die nächste Wartung fällig ist und die Userform zum richtigen Zeitpunkt aufpopen lassen.
    Beteiligt sind die Wartungsliste.xlsx (Eingabe), die Userform im Wartungsprotokoll (Bearbeitung) und das Wartungsprotokoll.xlsm (Ausgabe)
    Userbild
    
    Was Du auf zwei Multipages aufteilen willst, gehört doch zu einem Datensatz oder? Ein Bild auf dem der Ort der Aufgabe mit der Aufgabennummer markiert ist (Steuerelement ist ein Image-Control, in dem Das Bild "einfach" getauscht werden kann) und die Möglichkeit, die Erledigung der Aufgabe zu verwalten (wofür ein oder mehrere weitere Steuerelemente gebraucht werden). Diese Erledigung gehört doch jeweils zu genau einem Bild oder?
    
    Meinst du damit, ich könnte in der Userform das Bild direkt in der Image-Control wechseln, wenn ich die letzte Aufgabe zu einem Bild erreicht habe? Also wenn ich eine bestimmte Anzahl auf einen ControlButton gedrückt habe? Also den den Trigger zum Bildwechsel. Wie würde ich das anstellen?
    
    wenn davon auszugehen ist, dass die hinzugefügten Seiten alle gleich aussehen (gleiche Steuerelemente an gleicher Position), dann ist es einfacher, auf die Multipage zu verzichten und nur eine einzige Seite anzulegen.
    
    Was meinst du konkret mit einzige Seite anlegen?
    
    Mehrere solcher Datensätze kannst Du in "nested dictionaries" verwalten. Also Scripting.Dicitonaries, die in einem Scripting.Dictionary angelegt werden. Das ergibt eine dynamsiche Datenstruktur. Beim Aufruf der UserForm werden alle für den Aufruf benötigten Datensätze in die Dictionaries geschrieben. Das sind dann genau die Daten, die Du in den Steuerelementen durchschalten willst. Das kann dann z.B. mit einem Scrollbar gemacht werden. Wenn Du auf den OK Button klickst, werden die Inhalte der Dictionaries in die Excel-Tabelle(n) geschrieben. Bei Abbruch wird die UF einfach geschlossen und die Daten verfallen.
    
    Ich weis nicht was du mit "nested dictionaries" meinst. Kannst du mir evtl. ein Beispiel davon schicken?
    Ich hoffe ich habe mich verständlich ausgedrückt.
    Es tut mir leid, dass ich so lange gebraucht habe um zu Antworten. Ich war ein bischen überfordert und musste mich erst mal orientieren.
    Gruß
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 15:54:37
    Daniel
    Hi
    naja das sieht für mich eher nach einer Aufgabe für einen Profi aus.
    Excel ist immer nur "Hausfrauen/Heimwerker"-Gebastel
    Excel ist für sowas auch nicht das richtige Tool, da das im Prinzip schon ne richtige Datenbank ist.
    Welche Ansprüche werden an das System gestellt? ist das in irgendeiner Form Teil eines verplichtenden Qualtiätsmanagement?
    dh müsst ihr damit die Wartung der Maschinen revisionssicher dokumentieren oder ist das nur für euch selbst und "just for fun"?
    Sobald das Ergebnis in irgendeiner Form wichtig ist, würde ich da nicht Excel einsetzen.
    Excel nur, wenn das ganze für euch als Gedächtnisstütze dienen soll (in form eines digitalen interaktiven Handbuchs), oder wenn ihr einen Prototypen als Vorabversion für ein richtiges Dokumentationssystem bauen wollt.
    bedenke folgendes:
    du hast in Summe 100 Maschinen mit insgesamt 1.000 Bildern und 10.000 Wartungspunkten.
    das bekommst du so niemals mit allen Elementen gleichzeitig in einer Userform dargestellt.
    wenn du sowas realisieren willst, würde ich folgendes einsetzen:
    - eine Combobox für die Maschinenauswahl
    - Eine Listbox, die die Wartungsorte der gewählten Maschine
    - ein Imagecontrol für das Bild des gewählten Wartungsortes
    - Eine Listbox für die Aufgaben des des gewählten Wartungsortes
    in Listboxen kann man relativ einfach dynamisieren und Daten ein- und austauschen.
    z.B. dass die Aufgabenliste neu eingelesen wird, wenn ein anderer Wartungsort ausgewählt wird.
    genauso kann man programmieren, dass wenn in der Aufgabenliste der letzte Eintrag mit OK bestätigt wurde, der nächste Wartungsort ausgewählt und dessen Aufgaben angezeigt werden.
    ja, man muss alles selber programmieren, aber wenn man es so aufbaut, geht das auch mit bescheidenen Programmierkenntnissen (Kreativität im Problemlösungsprozess sollte aber vorhanden sein)
    auch die 1000 Bilder kannst du in der Userform wahrscheinlich nicht speichern.
    da ist es sinnvoller, wenn du die immer von der Platte einliest und das Image-Control aktualisierst
    hätte auch den Vorteil, dass du, wenn du viele gleiche Maschinen mit den selben Wartungsorten hast, du nicht für jede ein eigenes Bild brauchst sondern das selbe Bild für mehrere Maschinen verwenden kannst.
    ob du Dcitionarys brauchst, weiß ich nicht.
    Vermutlich lässt sich das auch mit normalen Arrays programmieren.
    Dictionarys sind im Prinzip eindimensionale Variant-Arrays, bei denen der Index ein beliebiger Freitext sein kann und keine fest vorgegebene Zählnummer sein muss wie wie bei einem normalen Array.
    Wenn man jetzt Arrays braucht, in denen man Daten zu bestimmten Begriffen zuordnen will, kann man damit schöne dinge tun, die in Zahlenindizierten Arrays aufwendig werden.
    was du für diese Aufgabe vielleicht eher brauchen kannst, ist das wissen, dass man mehrdimensionalität in VBA nicht nur über echte 2- oder 3-Dimensionale Arrays erstellen kann, sondern auch dadurch, dass ein Element eines Arrays nicht zwingend ein Einzelwert sein muss, sondern selbst ein weiteres Array sein kann und das in mehreren Stufen.
    du bist hier ja quasi dreidimensional: 1. Maschine 2. Wartungsort 3. Arbeitsschritt.
    legst du dir dafür ein echtes dreidimensionales Array an, so hast du für jede Maschine immer die gleiche Anzahl an mögliichen Wartungsorten und für alle Wartungsorte immer die gleiche Anzahl an Arbeitsschritten.
    brauchst du hier flexibiltät, kann man das mit dem Array-in-Array-Konzept erreichen.
    Gruß Daniel
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 21:39:59
    Markakus
    Hallo Daniel
    Vielen Dank für deine Antwort. Es tut mir leid dass ich bisher noch nicht geschrieben habe.
    Nach deiner Antwort war ich ein wenig deprimiert und habe an den Sinn meines Projekts gezweifelt bzw. ob ich das schaffen kann.
    Aber natürlch hast du recht. Am Anfang sieht alles machbar aus, bis es zu den Details kommt. Vorallem wenn man wenig Erfahrung hat wie ich.
    
    Welche Ansprüche werden an das System gestellt? ist das in irgendeiner Form Teil eines verplichtenden Qualtiätsmanagement?
    
    Ich werden noch mit einem Mitarbeiter sprechen in wie weit das verpflichtend ist bei uns.
    
    dh müsst ihr damit die Wartung der Maschinen revisionssicher dokumentieren oder ist das nur für euch selbst und "just for fun"?
    
    Was heist revisionssiche Dokumentation?
    Bisher haben wir die Wartung direkt in Exceltabellen eingetragen. Es ist dabei für die Mitarbeiter aus dem rein textlichen Kontext schwierig zu verstehen was die Aufgabe ist. Bzw. es kostet viel Zeit zu lesen. Als Reaktion werden oft nur Kreuze gesetzt ohne wirklich die Frage zu lesen. Deshalb wollen wir mit dem Bild die Wartungssituation besser visualisiren, so dass ein schnelles und korrektes Ergebnis zustandekommt. Auserdem, so ist die Hoffnung, wollen wir Tipfehler verhindern die beim manuellen Eintragen geschehen verhindern. Ich denke die Lösung mit der Userform geht zumindest in die richtige Richtung.
    Die Firma wollte schon seit langen ein ERP-System einführen das sicherlich das Thema auch abdecken würde. Leider wurde die Einführung immer wieder verschoben und ich hab den Glauben verlohren dass es kommen wird.
    Persönlich möchte ich meine VBA-Kenntisse verbessern und habe deshalb einen eigenützigen Grund mich um das Projekt zu kümmern.
    Was ich euch noch fragen wollte:
    Wie geht man am besten vor wenn man gut in VBA werden will?
    Macht es Sinn Code-Snipsel in Anki zulernen (Karteikarten-Lern-Programm)?
    Wie seid Ihr vorgegangen?
    Habt ihr vorher eine andere Programmiersprache gelernt?
    Grüße
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    23.06.2021 00:31:14
    Daniel
    Was heißt revisionssicher?
    Ganz einfach: Eine Exceltabelle ist kein Dokument, da sie nicht manipulationssicher ist.
    Dh wenn bespw. durch eine Maschine ein größerer Schaden entsteht und gerichtlich die Schuldfrage geklärt werden muss und dabei die Frage auftaucht, ob denn alle Wartungsarbeiten ordnungsgemäß durchgeführt wurden, dann wird eine Excelliste als Beweismittel nicht viel wert sein.
    Habt ihr irgendwelche Qualitätssiegel ("Zertifiziert nach DIN/ISO trallala") oder Audit-Standards zu erfüllen, müsstest du abklären ob sowas dann ausreicht oder ob mehr Sicherheit erwartet wird.
    Ein Gastwirt kann sich beispielsweise sein Kassensystem auch nicht selber mit Excel programmieren, weil das Finanzamt das nicht anerkennt.
    Natürlich kann er nebenbei Excellisten führen um mit den daraus gewonnenenen Erkenntnissen seinen Betrieb zu optimieren, aber das ist eine Sache, die er nicht machen muss und daher nur für sich selber macht.
    Gruß Daniel
    Anzeige
    AW: 2 Multipages in einer Userform
    23.06.2021 07:46:38
    Markakus
    Hallo Daniel,
    wir sind nach Iso-TS16969 und IATF16969 zertifiziert. Die externen Auditoren und Kundenauditoren waren aber bisher zufrieden mit unseren von Hand erstellten und theoretisch auch nächträglich veränderbaren Excellisten.
    Ich muss mal bei der Qualitätssicherung nachfragen ob unser vorgehen so in Ordnung ist bzw. ob wir das auch in Zukunft so weiter fortführen können.
    Grüße
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    23.06.2021 09:44:10
    Markakus
    Auf Nachfrage ist Revisionssicherheit bei uns kein Thema. Es heißt: "Man solle die Kirche im Dorf lassen."
    Wie gesagt haben die Auditoren bisher unsere Dokumente akzeptiert.
    Ich hoffe die sind der Gefährdung bewusst.
    Vielen Dank für deinen Hinweis:
    Gruß
    Markakus
    AW: 2 Multipages in einer Userform
    23.06.2021 01:13:12
    Daniel
    Was heißt revisionssicher?
    Naja ein Gastronom bspw. darf sein Kassensystem nicht mit Excel programmieren, weil das Finanzamt das nicht anerkennt.
    Das schließt natürlich nicht aus, dass er nebenbei für sich selber noch Excellisten führt um seinen Laden zu optimieren.
    Eine Exceltabelle ist halt nicht fälschungssicher und damit kein Dokument.
    Gruß Daniel
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 16:16:34
    Zwenn
    Hallo Markakus,
    "nested dictionaries" ist der englische Ausdruck für verschachtelte Dictionaries. Deshalb schrieb ich, es sind Dictionaries, die in einem Dictionary angelegt werden. Nun habe ich vorausgesetzt, Du weißt, was ein Dictionary ist. Das ist vielleicht etwas viel verlangt, bzw. von mir übers Ziel hinaus geschossen. Du kannst Dir hier einen sehr guten Überblick über Dictionaries verschaffen (ich glaube da haben viele Leute gelernt, die Dinger richtig anzuwenden):
    https://excelmacromastery.com/vba-dictionary/
    Deine Datenstruktur ist ein Baum. Das ist sehr gut und sollte sich mit mehreren Ebenen aus Dictionries abbilden lassen. Ich kann mich daran am Abend mal versuchen und würde dafür die Tabelle3 aus Deiner ersten verlinkten Arbeitsmappe mit den 5 UFs verwenden. (Ein Datensatz ist übrigens genau eine Zeile in dieser Tabelle3.) Allerdings fehlt mir vor allem die Info, woher genau Du die Bilder nimmst. Sind die ebenfalls in Deiner Ausgangsdatei und wenn ja, haben sie dort Namen oder wie identifizierst Du ein bestimmtes Bild? Oder liegen die in einem Verzeichnis auf der Festplatte? Auch dann muss geklärt sein, wie ein Bild eindeutig zu einer Fragegruppe zugeordnet wird. Weiterhin ist in der Spalte "Zuordnung zu Dokument" nix eingetragen. Stehen da ggf. auch Infos drin, wie in "Beschreibung"?
    Bei jedem Wartungsdurchlauf sollen immer bestimmte Maschinen abgearbeitet werden. Mir ist noch nicht klar, wie die Auswahl für einen bestimmten Zyklus erfolgt. Muss es zusätzlich möglich sein eine beliebige Maschine oder eine freie Auswahl beliebiger Maschinen abzuarbeiten? Ich würde die festen Zuordnungen zu unterschiedlichen Zyklen über eine Spalte in der Ausgangstabelle festlegen. Jede Maschine bekommt eine Nr., wobei jede Nr. einem bestimmten Zyklus entspricht. So ließen sich Maschinen auch leicht verschieben oder aus der Wartung nehmen.
    Am Ende müssen die Daten dann auch irgendwo hingeschrieben werden. Hast Du dafür auch eine Beispielmappe?
    Viele Grüße,
    Zwenn
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 18:51:43
    Markakus
    Hallo Zwenn,
    
    Allerdings fehlt mir vor allem die Info, woher genau Du die Bilder nimmst. Sind die ebenfalls in Deiner Ausgangsdatei und wenn ja, haben sie dort Namen oder wie identifizierst Du ein bestimmtes Bild? Oder liegen die in einem Verzeichnis auf der Festplatte? Auch dann muss geklärt sein, wie ein Bild eindeutig zu einer Fragegruppe zugeordnet wird. 
    
    die Bilder hab ich im Verzeichnis abgelegt.
    Sie sind nach einer Strucktur eindeutig geordnet. Für den Datensatz in "Tabelle3" sind es follgende Bilder:
    WA_TS_ID1371-Pic1.JPG
    WA_TS_ID1371-Pic2.JPG
    WA_TS_ID1371-Pic3.JPG
    WA_TS_ID1371-Pic4.JPG
    WA_TS_ID1371-Pic5.JPG
    Das erste Bild des Datensatzes wird folgendermasen benannt: WA_TS_ID1371-Pic1.JPG
    Es ist folgender maßen strukturiert:
    strPraefix = "WA_TS_ID" ' interne Zuordnung die immer gleich bleibt
    strMaschinenNr = "1371" ' jeweilige Maschinennummer
    strImage = "-Pic1" ' jeweilige Bildnummer
    Somit sind alle Bilder eindeutig indentifizierbar
    Wie kann ich dir die Bilder zuschicken?
    
    Weiterhin ist in der Spalte "Zuordnung zu Dokument" nix eingetragen. Stehen da ggf. auch Infos drin, wie in "Beschreibung"?
    
    in "Zuordnung zu Dokument" steht normalerweise eine Referenz zu einem früheren Dokument wenn es eins gibt. Ist aber für das Projekt irrelevant.
    
    Bei jedem Wartungsdurchlauf sollen immer bestimmte Maschinen abgearbeitet werden. Mir ist noch nicht klar, wie die Auswahl für einen bestimmten Zyklus erfolgt. Muss es zusätzlich möglich sein eine beliebige Maschine oder eine freie Auswahl beliebiger Maschinen abzuarbeiten?
    
    Aus der Wartungsliste wird der jeweilige Datensatz per VBA-Programm per Hand ausgelößt in das Wartungsprotokoll "Tabelle3" geladen. Für jede Maschine gibt es ein seperates Wartungsprotokoll. Ich behandle also jeweils nur eine Maschine. Im Beispiel ist das die Maschine 1371.
    https://www.herber.de/bbs/user/146729.xlsm (nur zum Verständnis, ist meiner Meinung nach für Projekt nicht relevant)
    In der Datenbank "Tabelle3" hätte das Intervall enthalten sein sollen. (Hab ich in meiner ersten Nachricht noch nicht eingetragen gehabt. Habe es jetzt ergänzt "Spalte H".)
    https://www.herber.de/bbs/user/146728.xlsm
    
    Ich würde die festen Zuordnungen zu unterschiedlichen Zyklen über eine Spalte in der Ausgangstabelle festlegen. Jede Maschine bekommt eine Nr., wobei jede Nr. einem bestimmten Zyklus entspricht. So ließen sich Maschinen auch leicht verschieben oder aus der Wartung nehmen.
    
    Weis nicht so richtig was du damit meinst.
    
    Am Ende müssen die Daten dann auch irgendwo hingeschrieben werden. Hast Du dafür auch eine Beispielmappe?
    
    Das würde ich in der Selben Arbeitsmappe die auch das Tabellenblatt "Tabelle3" enthält einfügen. Also im Tabellenblatt "Tabelle1" (Habe Beispiel in Tabelle 1 ergänzt)
    ja - bedeutet Wartung durchgeführt, nein bedeutet Wartung nicht durchgeführt
    Ich hoffe meine Angaben sind vollständig
    Vielen Dank für deine Hilfe
    Grüße
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    22.06.2021 20:19:53
    Zwenn
    Hallo Markakus,
    sehr schön, wie strukturiert die Daten und auch die Bildnamen vorliegen. Ich verwende jetzt zunächst noch die Spalte "Zähler", die ich sonst als eindeutige ID eingeführt hätte. Die wird nämlich benötigt, um die Daten beim Zurückschreiben den richtigen Datensätzen zuordnen zu können. Jedenfalls in meinem Beispiel, für das ich jetzt schon eine UF erstellt habe. Dazu schreibe ich dann etwas, wenn ich fertig bin,
    Die Tabelle "Gesamtliste regelmäßige Arbeit" würde ich um ein paar Spalten erweitern, um darin die Maschinenzuordnung und die Maschinen in einem Zyklus zu markieren. Die Tabelle3 (und sonstige Maschinentabellen) brauchst Du dann nämlich nicht mehr, wenn ich es richtig verstanden habe. Die würde ich auch möglichst weglassen, weil Du damit doppelte Datenhaltung hast, was nach Möglichkeit immer zu vermeiden ist. Zumal Du die alle manuell pflegen musst. Nicht gut. Daten sollten grundsätzlich nur an einer einzgen Stelle zu pflegen sein. Auch wenn Du geschrieben hast, dass dort nur selten etwas geändert werden muss. Selten ist immer noch mehr als nie und damit zu viel.
    Natürlich muss dann noch darüber nachgedacht werden, wo und wie die Ergebnisse der Wartung eingetragen werden. Auch hier würde ich zu einer einzigen Tabelle tendieren. Verikale Autofilter hat Excel an Bord, womit die Auswahl von gleichzeitig angezeigten Maschinen begrenzt werden kann. Leere Spalten (weil keine Einträge zu den gelisteten Maschinen) sollten sich ausblenden lassen. Das ist aber erstmal nur eine Grundidee.
    Unterm Strich hättest Du dann nur noch zwei Tabellen, in denen alles drinsteht.
    Ich entwickle mal das Beispiel weiter, das dann eher als Anschauung dienen soll, wie ich das mit den Steuerelementen ohne Multipage oder Tabstrips meine. Beides ist meines Erachtens nach nicht notwendig. Wahrscheinlich kann man sogar mit einer einzigen UF auskommen, indem die einzelnen Schritte Deiner jetzigen fünf UF nacheinander eingeblendet werden. Das sind ja voneinander unabhängige Schritte, wenn ich das richtig verstanden habe. Soll heißen, es werden zu keiner Zeit zwei der UF gleichzeitig benötigt. Falls doch, ordnet man alle Steuerelemente auf einer UF an.
    Was jetzt noch interessant wäre, sind die größen der Bilder in Pixeln. Natürlich keine Auflistung aller, aber die Info ob das Seitenverhältnis immer gleich ist und die Pixel Horizontal/Vertikal zum kleinsten und zum größten Bild. Das solltest Du schnell über den Windows Explorer rausfinden können. Dort kann man eine Spalte "Abmessungen" anzeigen lassen. Dazu klickst Du im Verzeichnis mit den Bildern im Explorer mit der rechten Maustatse auf die Kopfzeile und wählst den Eintrag "Abmessungen" aus. Wenn Du dann auf die Kopfzelle dieser Spalte klickst, kannst Du die Dateien entsprechend aufwärts oder abwärts sortieren. Leider sind die Abmaße in einer Spalte, aber vielleicht kannst Du es trotzdem schnell sehen. Die Angaben "Horizontale Auflösung" und "Vertikale Auflösung" sind leider DPI Angaben, womit wir hier nix anfangen können. Gib hier bitte die Abmaße in Pixeln für das kleinste und größte Bild an. Ideal wäre es, wenn alle gleich groß sind.
    Du hast jetzt zu Daniels Antwort nix mehr geschrieben. Das solltest Du schon allein deshalb machen, weil auch er sich Deinen Kopf zerbrochen hat. Abgesehen davon ist das auch eine Frage der Höflichkeit finde ich, wenn Dir jemand so ausführlich antwortet. Vor allem finde ich aber seinen Hinweis auf die Revisionssicherheit sehr gut und wichtig. Solltest Du damit nix anfangen können, bringe das bei Deinem Arbeitgeber auf jeden Fall zur Sprache.
    Viele Grüße,
    Zwenn
    Anzeige
    AW: 2 Multipages in einer Userform
    23.06.2021 07:33:16
    Markakus
    Hallo Zwenn,
    ich denke mein Post ging gestern nicht raus. So wie es scheint.
    Ich hatte dir dort die Pixel-Abessungen geschickt.
    Bilder:
    größte Breite: 1649 (1649x707)
    kleinste Breite: 978 (978x621)
    größte Höhe: 735 (1601x735)
    kleinste Höhe: 477 (1236x477)
    ich könnte die Bilder aber auch harmonisieren so dass alle Bilder die selbe größe haben. Oder zumindest im Seitenverhältnis.
    
    Unterm Strich hättest Du dann nur noch zwei Tabellen, in denen alles drinsteht.
    
    Wenn ich nur 2 Tabellen habe, habe ich dann nicht ein Problem wenn mehrere User gleichzeitig auf das Wartungsprotokoll schreiben wollen also mit der Userform arbeiten? Der Wartungszeitpunkt findet ja für alle User gleichzeitig statt.
    
    Soll heißen, es werden zu keiner Zeit zwei der UF gleichzeitig benötigt. Falls doch, ordnet man alle Steuerelemente auf einer UF an.
    
    Genau die UFs sind unabhängig. Das könnte man evtl. auch zusammenfassen.
    Ich hoffe ich komme mt meiner Information jetzt nicht zu spät.
    Grüße
    Markakus
    Anzeige
    AW: 2 Multipages in einer Userform
    23.06.2021 11:20:43
    Zwenn
    Hallo Markakus,
    wieso zu spät? Uns hetzt doch niemand :-) Tagsüber kann ich mich damit jetzt allerdings nicht beschäftigen.
    
    Wenn ich nur 2 Tabellen habe, habe ich dann nicht ein Problem wenn mehrere User gleichzeitig auf das
    Wartungsprotokoll schreiben wollen also mit der Userform arbeiten? Der Wartungszeitpunkt findet ja für
    alle User gleichzeitig statt.
    
    Von Excel als Multi-User-Anwendung rate ich ab. Das geht mit ziemlicher Sicherheit nach hinten los. Vielleicht nicht, wenn jeder seine eigenen Tabellen hat und eine gemeinsame, aus der aber nur gelesen wird. Mir war nicht klar, dass mehrere Mitarbeiter parallel mit der Datei arbeiten sollen. Für solche Zwecke gibt es echte Datenbanken, die die Zugriffe regeln.
    Zur UF selbst, wie die Datensätze reinkommen und wie die Ergebnisse in die Tabelle(n) geschrieben werden, ist mir gestern beim Erstellen etwas klar geworden. Es gibt ja pro Datensatz nur eine einzige Antwort zu verwalten. Nämlich ob eine Aufgabe erledigt wurde oder nicht. Die Datensätze selbst stehen alle zeilenweise in einer Tabelle. Also kann man die Steuerelemente der UF aus der Tabelle befüllen und dann entweder jede Antwort direkt in die Zieltabelle schreiben oder erstmal alle Antworten in einem Dictionary sammeln und am Ende wegschreiben, um den Wartungsvorgang ohne Änderungen auch abbrechen zu können.
    Großes Speichermanagement entfällt dann.
    Die Bilder musst Du nicht anfassen. Die können durch die Einstellung Zoom des Image-Control automatisch für die Anzeige in der UF umgerechnet werden. Ich wollte nur wissen, ob es dann evtl. Pixelbrei gibt, weil vielleicht manche Bilder sehr klein sind.
    Viele Grüße,
    Zwenn
    Anzeige
    AW: 2 Multipages in einer Userform
    24.06.2021 09:39:02
    Markakus
    Hallo Zwenn,
    
    Uns hetzt doch niemand :-)
    
    OK :-)
    Was verstehtst du unter großem Speichermanagement?
    Meinst du damit die Fragen und Antworten in ein Array zu packen und zu einem geeigneten Zeitpunkt wieder zu lesen?
    Grüße
    AW: 2 Multipages in einer Userform
    24.06.2021 11:23:56
    Zwenn
    Moin Markakus
    Ja, genau das meine ich. Die Fragen werden sowieso aus der Tabelle gelesen und die Bildnamen anhand bestimmter Informationen aus der jeweils gleichen Zeile in der Tabelle hergeleitet. Ob diese Infos nun alle nach dem Makrostart extra in ein Array, Dictionary oder sonstwo eingelesen werden oder zu jeder Frage aus der Tabelle gelesen werden, ist für die Anzeige in der UF unerheblich. Wichtig ist, die Antworten eindeutig den Aufgaben zuordnen zu können. Das lässt sich in Deinem Fall aber sehr einfach über die ID erledigen. Also der eindeutigen Datensatznummer, die Du in Deiner Tabelle als Zähler bezeichnet hast.
    Muss ich mir nachher nochmal näher ansehen. Heute und morgen ist ja EM Pause ;-)
    Viele Grüße,
    Zwenn
    Anzeige
    ;

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige