Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
UF einträge aus aktiver Zeile einlesen
29.02.2020 22:35:57
Tanja
An das Forum,
benötige mal wieder fachliche Hilfe in Sachen VBA.
Ich habe ein Tabellenblatt mit zwei Commandbuttons.
Pos. 1)
Mit dem ersten cmd (Personal erfassen) rufe ich die UF "UserForm_Personal_erfassen" auf.
Aus dieser UF (UserForm_Personal_erfassen) sollen die Einträge aus den TextBoxen in die erste freie Zeile
im Tabellenblatt gespeichert werden.
Pos. 2)
Mit dem zweiten cmd (Personal lesen) rufe ich die UF "UserForm_Personal_lesen" auf.
Wie bekomme ich die UF "UserForm_Personal_lesen" gefüllt.
Die UserForm soll mit den Zellen aus der aktiven Zeile gefüllt werden.
Hab eine Exceldatei mit 2 Schaltflächen zum aufrufen der beiden Userformen sowie TextBoxen u. Listboxen
vorbereitet. (Diese Datei lade ich gleich hoch)
Es wäre schön, wenn mir jemand unter die Arme greifen und ein wenig Starthilfe geben kann, da ich in VBA gerade erst als Anfänger unterwegs bin.
Die Makros brauchen natürlich nicht alle Text- Listboxen enthalten.
Wer kann mir dabei helfen diese Exceldatei ein wenig zu verfeinern, sodass die Makros zu Pos. 1 und Pos. 2
ausgeführt werden können?
LG
Tanja

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UF einträge aus aktiver Zeile einlesen
29.02.2020 23:40:03
Oberschlumpf
Hi Tanja,
du hast schon gemerkt, dass du im Userform(ular) "PersonalLesen" anstelle von Textboxen nur Listboxen verewndet hast, oder?
Na ja, wie dem auch sei.
Eigentlich benötigst du - nur ein - Userform.
In Abhängigkeit, auf welchen Button du klickst (Personal erfassen oder Personal lesen) entscheidest du dann - mit deinem VBA-Code - wie es weiter geht.
Ich versuch mal mein Glück mit deiner Datei und werde mich wieder melden.
Es ist jetzt nicht notwendig, dass du deine 1. mißglückte Bsp-Datei korrigierst und hier noch mal zur Verfügung stellst.
Ich werde nur dein Userform Personal erfassen einsetzen.
Du wirst sehen, was man mit VBA so anstellen kann :-)
Ciao
Thorsten
Anzeige
huch...
29.02.2020 23:52:11
Oberschlumpf
Hi Tanja,
ich lese gerade in deinem Text, dass du ja selbst die Listboxen erwähnt hast.
So war das gar kein (Flüchtigkeits)Fehler von dir, sondern gewollt.
Aber wozu sollen die Listboxen gut sein?
Eine Listbox kann (und soll) mehrere Zeilen (und Spalten) an Daten aufnehmen.
In deinen Userforms macht das, so finde ich, keinen Sinn.
Denn wenn z Bsp Zeile 4 die aktive Zeile ist, kann für "Name" auch nur "Muster" übernommen werden.
Hier reicht einfach auch nur eine Textbox.
Na ja, ich bastel mal weiter :-)
Ciao
Thorsten
bis hier erst mal...
01.03.2020 00:51:03
Oberschlumpf
Hi Tanja,
wer weiß, vielleicht hast du ja einen sehr guten Grund, wieso du im 2. Userform nur mit Listboxen arbeiten willst - nur ich erkenne diesen Grund noch nicht :-)
Deshalb will ich dir hier erst mal mein 1. Zwischenergebnis zeigen:
https://www.herber.de/bbs/user/135545.xlsm
Bisher habe ich...
...nur ein Userform verwendet (habe den Namen geändert in ufPersonal)
...habe die internen Namen aller Textboxen entsprechend ihrer "Aufgabe" geändert
(aus TextBox1 wurde txtPnr, aus TextBox2 wurde txtNName, aus TextBox3 wurde txtVName, usw)
Der Vorteil ist, dass du auch irgdwo im VBA-Code sofort erkennst, was die eine oder andere Textbox für Werte aufnehmen soll.
Bei nur wenigen Codezeilen bleibt die Übersicht bei Verwendung von TextBox1, TextBox2, usw vielleicht erhalten.
Aber wenn du viele hundert Zeilen Code geschrieben hast, wirst du auf Anhieb nicht mehr wissen, was war noch mal TextBox1 oder so.
Daher mein Tipp: gib jedem Control einen "sprechenden" Namen (an dem du erkennst, wozu das Control da ist)
So, nun aber zum Eigentlichen, dem Verwenden von nur einem Userform mit zwei Commandbutton :-)
Ich habe auch beide Button umbenannt cmdAdd für "Personaldaten erfassen" und cmdEdit für "Personaldaten ändern".
Letzteres hattest du "Personaldaten lesen" genannt.
Hier unterstelle ich mal, dass du nach dem Einlesen der aktiven Zelldaten ins Userform dir die Daten nicht nur im Userform ansehen willst, sondern dass du hier bei Bedarf die Daten auch ändern (und speichern) willst, oder?
Na ja, ein Klick auf den 1. Button öffnet das Userform zum Eintragen neuer Personaldaten.
(Klick auf Speichern habe ich noch nicht programmiert, weil ich ja nicht sicher bin, ob ich mit meinen vielen Änderungen bis jetzt richtig liege)
Ein Klick auf den 2. Button öffnet das gleiche Userform und liest die Daten aus der Tabelle ein.
Vorausgesetzt - dass du zuvor in der Tabelle eine ausgefüllte Datenzeile ausgewählt hattest.
Wenn eine "leere" Zeile ausgewählt ist, merkt das der Code, und es wird automatisch in den Modus "Personaldaten erfassen" gewechselt.
So, bis hier bin ich gekommen.
Jetzt warte ich auf dein Feedback.
Ciao
Thorsten
Anzeige
AW: bis hier erst mal...
01.03.2020 08:43:17
Tanja
Guten morgen Thorsten,
erst einmal vielen Dank für deine Hilfe.
Ich bin in VBA recht neu unterwegs und kenne viele Funktionen noch nicht. :-)
Ja, du hast recht.
Also, Wenn das so möglich ist wie du beschrieben hast, benötige ich nur eine UF zum aufrufen der erfassten Personaldaten, zum ändern der erfassten Personaldaten und zum "Neu" anlegen von Personaldaten.
Deine Änderungen sind richtig und gefallen mir auch sehr gut.
Also, das einlesen der aktiven Zeile funktioniert ja schon . Supi.:-)
Wie kann ich einen vorhandenen Eintrag über die UF ändern ?
Wie kann ich denn einen "neuen" Eintrag in der ersten freien Zeile speichern ?
…… :-)
LG
Tanja
Anzeige
hier geht's weiter
01.03.2020 11:51:27
Oberschlumpf
Hi Tanja,
bitte schön
https://www.herber.de/bbs/user/135546.xlsm
Ich hab noch eine Änderung eingebaut:
Das Textfeld für "verheiratet" hab ich gegen eine ComboBox ausgetauscht.
Denn ein möglicher Eintrag kann nur sein:
unbekannt,ja,nein,geschieden oder verwitwet
Somit wählst du einfach einen dieser Einträge aus der ComboBox aus und ersparst dir das Tippen vollständig.
zu deinen Fragen
Wie kann ich einen vorhandenen Eintrag über die UF ändern ?
1. Wähle zuerst eine der Datenzeilen aus und klick dann auf den Button "Personaldaten ändern"
Sollte eine komplett leere Zeile ausgewählt sein, wird automatisch in den Modus "Personaldaten erfassen" gewechselt.
2. DAS Userform(ular) öffnet sich, es werden die Daten in die Textboxen/ComboBox eingetragen
Der Code "merkt" sich die Datenzeile, die du zuvor ausgewählt hast.
3. Nimm nun die erforderlichen Veränderungen vor und klick auf den Button "Ändern"
Alle Daten (alte + geänderte) werden in der "gemerkten" Zeile in die entsprechenden Zellen eingetragen
4. Es erscheint die Frage, ob das Userform geschlossen werden soll
Bei Auswahl JA = Formular wird geschlossen; bei NEIN bleibt Formular geöffnet
Wenn du - immer - möchtest, dass das Formular geschlossen werden soll, ändere im Code die entsprechenden Zeilen, die ich kommentiert habe
Wie kann ich denn einen "neuen" Eintrag in der ersten freien Zeile speichern ?
1. Klick auf den Button "Personaldaten erfassen"
Der Code ermittelt in der Datentabelle die nächste, leere Zeile anhand des letzten Eintrags in Spalte A.
Es ist egal, ob eine "leere" oder nicht "leere" Zeile ausgewählt ist. Das Userform wird immer mit leeren Textfeldern geöffnet; die ComboBox für "verheiratet" enthält natürlich die zuvor erwähnten Einträge
2. Trag alles ein, was du möchtest
3. Klick auf den Button "Speichern"
Es wird empfohlen, immer eine Pers.-Nr (Spalte A) einzutragen.
Solltest du z Bsp nur irgdwo anders einen Eintrag machen, z Bsp Name, wird auch genau nur dieser Eintrag in der entsprechenden Zelle in der nächsten, leeren Zeile eingetragen.
Wenn du nun einen weiteren neuen MA einträgst, wird als nächste, leere Zeile fälschlicherweise die Zeile ermittelt, in der nur in Name ein Eintrag steht - diese Zeile wird dann überschrieben
Es gibt also keine Kontrollen auf Richtigkeit oder Vollständig der Daten.
4. Auch jetzt erscheint nach Klick auf "Speichern" die Frage, ob das Userform geschlossen werden soll.
So, Tanja, das war mein Werk zum Sonntag :-)
Wenn du zu meinem Code, wie er bis jetzt vorhanden ist, noch Fragen hast, weil du z Bsp einen bestimmten Befehl nicht verstehst, kannst du hier gern Folgefragen stellen.
Wenn du aber neue Ideen hast, die noch nicht enthalten sind, dann bitte ich dich, erstelle auf Grundlage meiner jetzigen Datei im Forum einen neuen Beitrag.
Denn sonst ist die Gefahr groß, dass ich der einzige Antworter bin :-)
Ich hätte z Bsp noch diese Ideen :-) (nein, im Moment hab ich keine Lust/Zeit, diese Ideen einzubauen :-) )
- bei Eingabe der privaten Festnetztelefonnummer könnte z Bsp direkt während der Eingabe der Ort ermittelt werden, wenn es in der Datentabelle schon Einträge mit der gleichen Festnetztelefonnummer gibt. So müsstest du dann nur noch die PLZ eintragen.
Natürlich ist 040 nicht nur die Vorwahl von Hamburg, aber trotzdem könnte dir das Finden der Vorwahl die Orseingabe ersparen ;-)
- zusätzlich könnte man im Userform einen Button "Löschen" einbauen, der bei vorheriger nicht leerer Zeilenwahl eben genau diese Zeile (mit oder ohne Sicherheitsabfrage) genau diese Zeile löschen würde, weil es den MA nicht mehr in der Firma gibt.
- um besser zu erkennen, wenn man einen Datensätz ändern will, könnte man bei Auswahl der Datenzeile diese Zeile mit einer anderen Hintergrundfarbe versehen
Konnte ich denn so weit helfen?
Ciao
Thorsten
Anzeige
AW: hier geht's weiter (Danke)
01.03.2020 18:37:02
Tanja
Hallo Thorsten,
supi, du hast mir echt weiter geholfen.
Ich werde den Rest noch verfeinern. :-)
(Wird wohl etwas länger dauern !)
Vieeeeeelen Dank.
Gruße
Tanja

210 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige