25.01.2021, 05:51
Hallo,
ich wäre Euch sehr dankbar, wenn Ihr mir bei folgender Herausforderung helfen könntet:
Ausgangssituation:
Ein Formular besteht aus einem Listenfeld und unter nderem etlichen Textfeldern.
In der Listenbox des Formulars werden die Daten aus einer Tabelle eingelesen.
Es werden nur die Spalten: Name, Vorname, Geburtsdatum angezeigt.
Die ID-Nummer wird zwar auch eingelesen, aber nicht angezeigt.
Sie soll später dazu dienen, den entsprechenden Datensatz schneller zu finden.
(Möglicherweise überflüssig?)
Den Schritt bis hierhin habe ich bei meinen ersten Gehversuchen in Excel VBA mit viel Versuch und Irrtum leidlich geschafft.
Die Herausforderung:
Ich möchte, dass wenn eine Zeile in der Listenbox ausgewählt wurde, dass
a) der entsprechende Datensatz in der Tabelle gefunden wird,
b) die im Formular vorhanden Textfelder entsprechend gefüllt werden, (z. Z. in Beispieldatei noch funktionslos)
c) bei Änderung im Formular sollen die Daten in der Tabelle entsprechend ebenfalls geändert werden.
Momentan habe ich nicht den leisesten Schimmer, wie ich das machen soll.
Für Hinweise wäre ich Euch daher sehr dankbar.
Da Anfänger, der von Excel nur 3%, von VBA kaum mehr versteht als eine Kuh vom Klavierspielen, möchte ich Euch bitten das so zu erklären, dass es auch für ein Greenhorn wie mich nachvollziehen ist.
Für jede Beispieldatei bin ich dankbar.
Nicht ganz so wichtig!
Es gibt noch andere Herausforderungen, die ich gerne lösen würde, sind aber momentan zweitrangig ist.
1.
In dem Formblatt gibt es ein Textfeld: „text_Suchbegriff“.
Wird ein Buchstabe eingetippt, wird die Liste entsprechend auf den Anfangsbuchstaben des Namens verkürzt.
Bei zwei Buchstaben z. B. „Ba“ wird die Liste weiter verkürzt, statt Bauer bis Braun, werden nur Namen aufgeführt, die mit Ba anfangen.
Wermutstropfen:
Wenn ich einen oder mehrere Kleinbuchstaben eintippe, z. B. „b“ werden mir in der Liste alle Namen angezeigt, die den Buchstaben „b“ enthalten;
nicht der Hit.
Was muss geändert werden, damit auch bei Eingabe von Kleinbuchstaben nur die Anfangsbuchstaben des Nachnamens berücksichtigt werden?
2. Eine Besonderheit, die hier vor Ort – Lateinamerika - wichtig ist:
In der Beispielliste tauchen die Name Peña und Pena auf.
Wenn ich als Suchkriterium „Pe“ eingebe, werden beide Namen auch in der Liste aufgeführt.
Wenn ich allerdings statt Peñ, Pen eingebe, wird der Name Peña nicht gefunden, entsprechend auch nicht in der Liste gezeigt, sondern in der Name „Pena“.
Das gleiche würde passieren, wenn ich statt einem á nur ein a eingebe.
Hinweis: selbstredend gibt es auf einer Tastatur für Lateinamerika sowohl den Buchstaben ñ als auch n.
Aber es wäre schön, dass sowohl Buchstaben wie á, Á usw "gleichwertig" bei der Suche berücksichtigt würden.
Wie kann ich das lösen?
3. Wenn ich eine Buchstaben in „text_Suchbegriff“ eingebe, wird zwar die „gefilterte“ Liste gezeigt,
der Header der Liste ist dann aber leer; nicht so schön!
Wenn ich das Eingabefeld „text_Suchbegriff“ leere wird wieder die ungefilterte Liste gezeigt, aber der Header ist trotzdem „leer“.
Was muss ich tun, damit auch der Header wieder angezeigt wird?
4. Wenn ich im Designemodus unter VBA im Formular / Listbox eine Zeile auswähle, wird die im "run-modus" ebenfalls als ausgewählt angezeigt
Was muss ich tun, damit beim Aufrufen des Formulars keine Zeile in der Listbox bereits vorab ausgewählt wurde?
Listenindex auf 0 (?) setzen? Wenn ja, wie?
5. Die zu filternden Datensätze für die Listbox werden über eine "Schleife"
For lngZeile = 1 To lngZeileMax etc
eingelesen.
Ich bin ziemlich davon überzeugt, dass es eine elegantere Lösung gibt,
irgendetwas mit
Me.lbo_Daten.RowSource + Filter
Habe aber keine Ahnung wie!
6. (ich weiß, ganz schön viele Fragen auf einmal).
Am liebsten würde ich auf die Listenbox verzichten und lieber eine Dropdownliste verwenden.
(Unter anderem auch aus Platzgründen im Formular.)
Ich habe aber die spaltenmäßige Formatierung in der Listbox nicht hinbekommen.
Falls es auch dafür eine Lösung gibt, die Listenbox durch eine Dropdownliste zu erstezen - entsprechende spaltenmäßige Formatierung vorausgesetzt -
wäre ich für Beispiele dankbar.
Danke Peter, El Salvador
PS.:
a) die im Anhang angefügte Beispiel-Datei enthält nur Dummy-Namen usw.
b) die Textboxen in dem Formular – bis auf die Textbox "Text-Suchbegriff" - haben noch keine Funktion, das gleiche gilt für die Command-Button mit Ausnahme "Abbrechen"
c) die Berechnung „Alter" in der Tabelle ist ungenau. Die Funktion „dateDiff“ funktioniert mal ja, mal nein.
Ich nutze Offfice 365 unter Wind 10 Prof
ich wäre Euch sehr dankbar, wenn Ihr mir bei folgender Herausforderung helfen könntet:
Ausgangssituation:
Ein Formular besteht aus einem Listenfeld und unter nderem etlichen Textfeldern.
In der Listenbox des Formulars werden die Daten aus einer Tabelle eingelesen.
Es werden nur die Spalten: Name, Vorname, Geburtsdatum angezeigt.
Die ID-Nummer wird zwar auch eingelesen, aber nicht angezeigt.
Sie soll später dazu dienen, den entsprechenden Datensatz schneller zu finden.
(Möglicherweise überflüssig?)
Den Schritt bis hierhin habe ich bei meinen ersten Gehversuchen in Excel VBA mit viel Versuch und Irrtum leidlich geschafft.
Die Herausforderung:
Ich möchte, dass wenn eine Zeile in der Listenbox ausgewählt wurde, dass
a) der entsprechende Datensatz in der Tabelle gefunden wird,
b) die im Formular vorhanden Textfelder entsprechend gefüllt werden, (z. Z. in Beispieldatei noch funktionslos)
c) bei Änderung im Formular sollen die Daten in der Tabelle entsprechend ebenfalls geändert werden.
Momentan habe ich nicht den leisesten Schimmer, wie ich das machen soll.
Für Hinweise wäre ich Euch daher sehr dankbar.
Da Anfänger, der von Excel nur 3%, von VBA kaum mehr versteht als eine Kuh vom Klavierspielen, möchte ich Euch bitten das so zu erklären, dass es auch für ein Greenhorn wie mich nachvollziehen ist.
Für jede Beispieldatei bin ich dankbar.
Nicht ganz so wichtig!
Es gibt noch andere Herausforderungen, die ich gerne lösen würde, sind aber momentan zweitrangig ist.
1.
In dem Formblatt gibt es ein Textfeld: „text_Suchbegriff“.
Wird ein Buchstabe eingetippt, wird die Liste entsprechend auf den Anfangsbuchstaben des Namens verkürzt.
Bei zwei Buchstaben z. B. „Ba“ wird die Liste weiter verkürzt, statt Bauer bis Braun, werden nur Namen aufgeführt, die mit Ba anfangen.
Wermutstropfen:
Wenn ich einen oder mehrere Kleinbuchstaben eintippe, z. B. „b“ werden mir in der Liste alle Namen angezeigt, die den Buchstaben „b“ enthalten;
nicht der Hit.
Was muss geändert werden, damit auch bei Eingabe von Kleinbuchstaben nur die Anfangsbuchstaben des Nachnamens berücksichtigt werden?
2. Eine Besonderheit, die hier vor Ort – Lateinamerika - wichtig ist:
In der Beispielliste tauchen die Name Peña und Pena auf.
Wenn ich als Suchkriterium „Pe“ eingebe, werden beide Namen auch in der Liste aufgeführt.
Wenn ich allerdings statt Peñ, Pen eingebe, wird der Name Peña nicht gefunden, entsprechend auch nicht in der Liste gezeigt, sondern in der Name „Pena“.
Das gleiche würde passieren, wenn ich statt einem á nur ein a eingebe.
Hinweis: selbstredend gibt es auf einer Tastatur für Lateinamerika sowohl den Buchstaben ñ als auch n.
Aber es wäre schön, dass sowohl Buchstaben wie á, Á usw "gleichwertig" bei der Suche berücksichtigt würden.
Wie kann ich das lösen?
3. Wenn ich eine Buchstaben in „text_Suchbegriff“ eingebe, wird zwar die „gefilterte“ Liste gezeigt,
der Header der Liste ist dann aber leer; nicht so schön!
Wenn ich das Eingabefeld „text_Suchbegriff“ leere wird wieder die ungefilterte Liste gezeigt, aber der Header ist trotzdem „leer“.
Was muss ich tun, damit auch der Header wieder angezeigt wird?
4. Wenn ich im Designemodus unter VBA im Formular / Listbox eine Zeile auswähle, wird die im "run-modus" ebenfalls als ausgewählt angezeigt
Was muss ich tun, damit beim Aufrufen des Formulars keine Zeile in der Listbox bereits vorab ausgewählt wurde?
Listenindex auf 0 (?) setzen? Wenn ja, wie?
5. Die zu filternden Datensätze für die Listbox werden über eine "Schleife"
For lngZeile = 1 To lngZeileMax etc
eingelesen.
Ich bin ziemlich davon überzeugt, dass es eine elegantere Lösung gibt,
irgendetwas mit
Me.lbo_Daten.RowSource + Filter
Habe aber keine Ahnung wie!
6. (ich weiß, ganz schön viele Fragen auf einmal).
Am liebsten würde ich auf die Listenbox verzichten und lieber eine Dropdownliste verwenden.
(Unter anderem auch aus Platzgründen im Formular.)
Ich habe aber die spaltenmäßige Formatierung in der Listbox nicht hinbekommen.
Falls es auch dafür eine Lösung gibt, die Listenbox durch eine Dropdownliste zu erstezen - entsprechende spaltenmäßige Formatierung vorausgesetzt -
wäre ich für Beispiele dankbar.
Danke Peter, El Salvador
PS.:
a) die im Anhang angefügte Beispiel-Datei enthält nur Dummy-Namen usw.
b) die Textboxen in dem Formular – bis auf die Textbox "Text-Suchbegriff" - haben noch keine Funktion, das gleiche gilt für die Command-Button mit Ausnahme "Abbrechen"
c) die Berechnung „Alter" in der Tabelle ist ungenau. Die Funktion „dateDiff“ funktioniert mal ja, mal nein.
Ich nutze Offfice 365 unter Wind 10 Prof