Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen

userform 1:n Beziehung


Betrifft: userform 1:n Beziehung von: Christian Rippe
Geschrieben am: 29.09.2019 12:39:33

Hallo liebe Leute,

ich habe vor 30 Jahren Datenverarbeitungskaufmann gelernt, allerdings nie in diesem Beruf gearbeitet. Nun bin ich erschlagen vom aktuellen Funktionsumfang, von Excel.
Programmierlogik ist mir noch soweit gegenwärtig, dass ich zumindest Code lesen kann.

Für einen gemeinnützigen Verein möchte ich eine Urlaubsverwaltung aufbauen.

Ich habe die Tabellen in eine 1:n-Beziehung gesetzt.
Der Anwender soll die Tabellen gar nicht zu sehen bekommen. Deshalb habe ich mir "userform" näher angesehen.

Hier komme ich nicht weiter.
Vor allem, weil mir einfach nicht die richtigen Fragen bei der Forumssuche einfallen und mir einige Basics fehlen.

Ich habe drei Tabellen angelegt.
Die "userform" habe ich aus vorherigen Versionen dieses Projektes übernommen.

In der Tabelle Teilnehmer gibt es den Key "Key".
In der Tabelle Urlaub den Key "Key_U".
In der Tabelle Urlaub_Kalkulation den Key "Key_Kalk".

Nun meine Probleme:

Wenn ich in "form_Teilnehmer_erfassen" einen neuen Teilnehmer anlege, wird mit "=Zeile(A1)" der Key angelegt. (Im Moment werden die Daten in die falsche Tabelle geschrieben. Habe da was verbastelt...)

In "form_Urlaub" soll der Teilnehmer in einer Combobox ausgewählt werden und die Urlaubstage in das "form_Urlaub", in Abhängigkeit von "Key", geschrieben werden.
Wie übertrage ich "Key" in "Key_U"?

In der Tabelle "Urlaub_kalkulation" sollen dann die verbliebenen Urlaubstage "U_Rest", abhängig vom Key, berechnet werden.

Die Datei kann ich leider nicht anhängen, da sie 572 kB groß ist.
Wie kann ich sie auf 300 kB redzieren?

Ich habe noch reichlich Fragen, würde mich aber schon sehr über eine Lösung der beschriebenen Aufgabe freuen.

Sonnige Grüße, Christian

  

Betrifft: AW: userform 1:n Beziehung von: Oberschlumpf
Geschrieben am: 29.09.2019 12:47:25

Hi Christian,

ich würde gern helfen, aber ohne Bsp-Datei schaffe zumindest ich das nicht.

Ideen zur Dateiverkleinerung:
1. Mit 7Zip komprimieren und dann die ZIP-Datei per Upload zeigen
2. Könntest du in einer Kopie deiner Datei vielleicht Teile löschen, die nix mit deinen hier gestellten Fragen zu tun haben?

Ciao erst mal
Thorsten


  

Betrifft: AW: userform 1:n Beziehung von: Christian Rippe
Geschrieben am: 29.09.2019 14:02:52

Hallo Oberschlumpf,

ich habe die Datei gepackt.
Hier der Link: https://www.herber.de/bbs/user/132274.zip
Danke für den Tipp!

LG, Christian


  

Betrifft: AW: userform 1:n Beziehung von: Oberschlumpf
Geschrieben am: 29.09.2019 16:46:40

Hi Christian,

zuerst einmal muss ich den anderen Antwortern hier zustimmen:
Excel ist keine Datenbankerstellung/Verwaltung. Somit wird es auch nix mit Beziehung 1:n o ä geben.

Trotzdem bin ich der Meinung, wir werden das schon schaffen (kann zwar dauern, kann vllt auch doch scheitern, aber wir schauen mal)

So, hier erst mal mein 1. Versuch:
https://www.herber.de/bbs/user/132277.zip
(bitte immer zuerst speichern, nicht! direkt aus dem Browser öffnen)

Mir war in deinen Codes aufgefallen, dass du Option Explicit nicht verwendest.
Füg bitte den Befehl Option Explicit - in jedes - Codefenster als erste Zeile ein

Mehr Infos dazu hab ich im Code hinterlassen.

Bis jetzt funktioniert die Dateneingabe + Speichern leidlich.
Es funktioniert, aber nach dem 1. Klick auf Speichern...
a) sollte der Speicher-Button deaktiviert sein, oder
b) die Inhalte aller Eingabefelder sollten gelöscht werden

Denn wenn a) oder b) nicht eingesetzt werden, und du z Bsp 5x auf Speichern klickst, hast du in der Tabelle "Teilnehmer" 5 Datensätze mit gleichem Inhalt.

Key_U (gleich Key) für Urlaub wird nun auch in die Tabelle eingetragen.
Vor dem Speichern eines Urlaubseintrages wird anhand der ausgewählten Person der Key in Tabelle "Teilnehmer" gefunden und in "Urlaub" übertragen.

Was sagst du zu bisherigem Ergebnis?
Wie gehts weiter?

Ciao
Thorsten


  

Betrifft: ich habe mal... von: Oberschlumpf
Geschrieben am: 30.09.2019 10:23:12

Hi Christian,

...noch ein wenig an deiner Datei "gebastelt"
https://www.herber.de/bbs/user/132293.zip

Und zwar habe ich Einiges im Userform "form_TN_Erfassung" geändert.

Geburtsdatum
Das Eingabe-Textfeld habe ich getauscht gegen 3 ComboBoxen (CB) für Tag, Monat + Jahr.
Die 3 CB werden beim Start des Userforms automatisch vorausgefüllt (Tag bis 31, Monat bis 12, Jahr bis 1900)
So muss man das Datum nicht mehr eintragen, sondern man kann es auswählen.
Und du kannst aus den CB's auch nur einen der Einträge auswählen, die vorgegeben sind.

Bei Verwendung des alten Textfeldes besteht immer die Gefahr, dass man sich vertippt, oder sonst irgendwie ein ungültiges Datum hinterlässt, was dann später zu Fehlern führt.

Userform
In deiner Datei ist der obere Bereich (Personendaten) insgesamt breiter als der Rest (Kennzahlen).
Ich habe die Gesamtbreite des oberen Bereichs an die Gesamtbreite des unteren Bereichs angepasst, und somit auch die Gesamtbreite des Userforms verringert.
So sieht es einheitlicher aus, finde zumindest ich.

Empfehlungen

Textfelder für Datumswerte
Ich würde alle Textfelder, die Datumswerte enthalten sollen, gegen ComboBoxen (wie bei Geburtsdatum) austauschen.
Die Gefahr von fehlerhaften Eingaben wird zu 100% beseitigt.

Userform-Design
Auch würde ich die 3 Button (Startseite, Speichern, Schließen) oberhalb des Bereichs Personendaten platzieren.
So könnte man die Gesamtbreite noch so weit verkleinern, dass die Abstände links + rechts zu den Rahmen gleich groß sind.



Bitte weiterhin beachten:
die Hinweise in meinem Beitrag https://www.herber.de/forum/messages/1715462.html

habe fertig :-)
Ciao
Thorsten


  

Betrifft: AW: ich habe mal... von: Christian Rippe
Geschrieben am: 01.10.2019 18:31:36

Hallo Thorsten,

ich habe die zweite Datei entdeckt.
Man sollte mal genauer hinschauen...

Wie das Geburtsdatum funktioniert, verstehe ich vom Prinzip her.
Aber wieso die Variable auf 120? liAnz = 1 To 120

Ich muss mir unbedingt die Basics anschauen.
Ich weiß, z. B. nicht, wo ich die einzelnen Scripte zuordne.

Mir ist auch nicht klar, wie ich mehrere Comboboxen anspreche.
Bei mir kommt bei mehreren immer der gleiche Inhalt, oder nichts, heraus.

Zum Glück ist das ja ein privates Projekt und hat Zeit.
Bisher behelfen wir uns im Verein ja auch so, irgendwie ;-)

Dir einen erholsamen Abend!

Sonnige Grüße
Christian


  

Betrifft: AW: ich habe mal... von: Oberschlumpf
Geschrieben am: 01.10.2019 19:53:29

Hi Christian,

Geburtstag - wieso liAnz = 1 To 120
Der Monat hat max 31 Tage
Das Jahr hat immer 12 Monate

Und wie alt ist in eurem Verein das älteste Mitglied???
Du musst ja auch ein Geburtsjahr auswählen.
Und 120 hab ich zufällig genommen - so kannst du zurück bis 1900 als Geb.jahr auswählen.
Wenn es aber so alte Mitglieder nicht gibt, kannst du anstelle von 120 eine kleinere Zahl eintragen.

Ich weiß, z. B. nicht, wo ich die einzelnen Scripte zuordne.
Was genau meinst du damit? Verstehe ich noch nicht. (aber vllt ist das von dir auch keine Frage an mich, sondern nur ne kurze Info von dir)

Mir ist auch nicht klar, wie ich mehrere Comboboxen anspreche
Jede ComboBox hat einen Namen. Und über diesen sprichst du jede ComboBox einzeln an.

Zum Glück ist das ja ein privates Projekt und hat Zeit.
Jep, das bedeutet aber auch, dass ich nicht alles alleine programmiere.
Die Änderungen, die ich bisher vornahm, ohne zu fragen, tat ich nur, weil mir all das gleich sofort auffiel. Und ich wollte von dir wissen, ob das so ok ist - es ist nämlich dein Projekt ;-)


So, wenn du Fragen hast, wie man was erreichen kann, dann frag ruhig.
Aber ich bitte dich, die Fragen präzise zu stellen, so dass das auch jemand versteht, der damit eigtl nix zu tun hat ;-)

Ciao
Thorsten

...womit geht es jetzt weiter?...


  

Betrifft: AW: userform 1:n Beziehung von: Daniel
Geschrieben am: 29.09.2019 12:53:26

Schwierig.
Ein Forum hat halt seine Stärken bei der Beantwortung von "speziellen Fragen", aber für die Vermittlung von Basics ist es nicht geeignet.

Auch ist Ecxel nicht unbedingt das Mittel der Wahl, wenn man "professionell" aussehende Anwendungen erstellen will, bei denen der Anwender keinen Zugriff auf die Tabellen haben soll, sehr aufwendig, weil die Erstellung von Oberflächen nur sehr rudimentär unterstützt wird.

Ansonsten ist es schwer dir zu helfen, weil wir einfach noch nicht genug über dein Projekt wissen.

Es ist auch so, dass einiges von dem was du schreibt, in Excel nicht vorhanden ist.
Bspw kann man in Excel nicht "Tabellen in eine 1:n-Beziehung setzen". Das ist eine Funktionalität aus relationalen Datenbanken wie Access, in Excel liegen aber die einzelnen Tabellen beziehungslos nebeneinander.

Gruß Daniel


  

Betrifft: AW: userform 1:n Beziehung von: Günther
Geschrieben am: 29.09.2019 13:03:22

Moin Christian,

"Sonnige Grüße" => Neid! ;-)
Also, wenn du dich in das Thema "Datenmodell" einliest, dann ist eine rudimentäre relationale Verknüpfung durchaus möglich. Deine weiteren Wünsche wirst du gewiss mit einer echten DB besser realisieren können, beispielsweise Access.

Gruß
Günther


  

Betrifft: AW: userform 1:n Beziehung von: Christian Rippe
Geschrieben am: 29.09.2019 14:08:35

Hallo Daniel,

Access wäre auch meine Wahl.
Im Verein wird allerdings ausschliesslich Excel genutzt und wenn ich mal nicht mehr dort sein sollte, kann dann niemand mehr an der Verwaltung arbeiten.

LG, Christian


  

Betrifft: Das gleich Problem sehe ich aber auch von: Daniel
Geschrieben am: 29.09.2019 14:14:25

bei Excel mit VBA-programmierung, insbesondere dann wenn auch noch mit Userforms gearbeitet wird.
Die Anzahl der Menschen die sowas können, ist auch nicht besonders groß.
Gruß Daniel


  

Betrifft: AW: Das gleich Problem sehe ich aber auch von: Christian Rippe
Geschrieben am: 29.09.2019 14:20:02

Auch wahr.
Aber es macht auch Spaß, mal wieder zu basteln und Neues zu lernen.
Hält die alte Grütze, da oben, in Schwung.

;-) Christian


  

Betrifft: AW: Das gleich Problem sehe ich aber auch von: Daniel
Geschrieben am: 29.09.2019 14:36:14

Dann Versuch doch mal, die Exceltabelle so zu gestalten, dass auch jeder damit intuitiv arbeiten kann, ohne VBA und ähnliche "Exoten" zu verwenden, so dass sich leichter jemand findet, der die Betreuung und weiter Entwicklung der Datei übernehmen kann.

Ist jetzt zwar nichts "neues", kann aber durchaus auch eine Herausforderung sein, mit beschränkten Mitteln was tolles zu basteln.

Gruß Daniel


Beiträge aus dem Excel-Forum zum Thema "userform 1:n Beziehung"