Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
760to764
760to764
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ComboBox als Variable

ComboBox als Variable
08.05.2006 16:39:31
Thomas
Guten Tag Excel-Forum,
Eine Tabelle soll durchsucht werden. Mein aktueller VBA-Code ermöglicht die Auswahl über eine ComboBox "cboName", d.h. über den Namen des Käufers:
' Makro für das Suchen (Käufer)
'

Private Sub cmdSuchenKäufer_Click()
Me.cboName = Cells(cboName.ListIndex + 2, 1)
Me.cboOrt.Value = Cells(cboName.ListIndex + 2, 2)
' usw. usw.
End Sub

Schöne wäre es, wenn in gleicher Weise auch die Suche über die ComboBox "cboOrt", d.h. über den Wohnort erfolgen könnte.
Wäre es möglich, "cboName" durch eine Variable zu ersetzen, so dass ENTWEDER nach dem Namen (cboName) ODER nach dem Wohnort (cboOrt) gesucht wird ... je nachdem wo der Anwender seine Eintragung macht.
Wie muss der oben genannte Code ergänzt / geändert werden ?
Vielen Dank bis hier hin.
Thomas B.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ComboBox als Variable
09.05.2006 01:46:00
Mustafa
Hallo Thomas,
Da ich den gesamten code nicht kenne mal ein schuss ins Blaue.
Villeicht so:

Private Sub cmdSuchenKäufer_Click()
If cboName.Value <> "" Then x = cboName.ListIndex + 2
If cboOrt.Value <> "" Then x = cboOrt.ListIndex + 2
Me.cboName = Cells(x, 1)
Me.cboOrt.Value = Cells(x, 2)
End Sub

Ungetestet!!!
Rückmeldung obs hilft wäre nett.
Viele Grüße aus Köln.
AW: ComboBox als Variable
09.05.2006 11:48:27
Thomas
@Mustafa
1.)
Danke. Charmante Lösung. Kurz, knapp und - für mich - nachvollziehbar.
2.)
Nachfrage: Wie kann ich "x" von dem "Private Sub SuchenKäufer click ()" und ein anderes "Private Sub" weitergeben, denn die gefundenen Werte sollen - nach einer Änderung - in die "alte" Zeile (= "x") geschrieben werden. Aus diesem Grunde ist es notwendig, das "x" aus der Such-Prozedur in die "Änderungsprozedur" zu übergeben.
3.)
Nochmals: Danke.
Beste Grüße.
Thomas B.
Anzeige
AW: ComboBox als Variable
09.05.2006 22:53:52
Mustafa
Hallo Thomas,
freut mich das ich helfen konnte.
Zu deiner Frage:
2.)
Nachfrage: Wie kann ich "x" von dem "Private Sub SuchenKäufer click ()" und ein anderes "Private Sub" weitergeben, denn die gefundenen Werte sollen - nach einer Änderung - in die "alte" Zeile (= "x") geschrieben werden. Aus diesem Grunde ist es notwendig, das "x" aus der Such-Prozedur in die "Änderungsprozedur" zu übergeben
Deklariere die Variable X in einem Standartmodul mit:
Public X
Dann ist sie Projektweit verfügbar, aber verliert ihren Wert evtl. nach ende einer Sub.
Dazu musst du sie glaub ich noch als Static deklarieren.
Dann behält sie den zuletzt eingegebenen Wert.
Rückmeldung obs Hilft wäre nett.
Viele Grüße aus Köln.
Anzeige
AW: ComboBox als Variable
10.05.2006 12:15:11
Thomas
Dear Mustafa,
vorweg: Vielen Dank dafür, dass DU Dich so nachhaltig um die Lösung MEINES Problems bemühst !!!
Deinen Vorschlag habe ich umgesetzt:
1. Die Variable "x" wurde im Modul "StartUp" (autoamtischer Start des UserForms) als "Public" definiert.
2. Ferner wurde die Variable "x" als "Static" in dem Code für das suchen bzw. ändern von Datensätzen definiert.
Ich bin insofern sicher, dass Deine Hinweise vollkommen zutreffend sind. Das Suchen über die Nummer des Baugrundstücks läuft problemlos. Jedoch: Das Suchen nach den Namen nicht mehr. Auch nicht das zurückschreiben geänderter Angaben.
Was mach ich falsch ?
Um Dir einen Einblick in die Tabelle und den Code zu geben, habe ich die Datei hochgeladen:
https://www.herber.de/bbs/user/33511.xls
Mal wieder: Danke sehr !!!!
Thomas B.
Anzeige
AW: ComboBox als Variable
10.05.2006 23:44:07
Mustafa
Hallo Thomas,
ich habe die Static X Deklarierung in die auto_open mit reingenommen und alle anderen Static x Anweisungen auskommentiert und hatte weder beim lesen noch beim schreiben der Daten probleme.
Wenns trotzdem nicht klappt dann guck ich mir das genauer an.
Rückmeldung obs klappt wäre nett.
Viele Grüße aus Köln.
AW: ComboBox als Variable
11.05.2006 10:00:58
Thomas
Lieber Mustafa,
zuerst wie üblich: DANKE :)
Deine Beobachtung zum "Verhalten" des UserForms ist zutreffend: Sowohl die Auswahl über den Namen als auch über die Nummer des Grundstücks funktionieren. Auch das zurückschreiben von geänderten Daten.
ABER: Sobald der Anwender die die ComboBox für den Namen genutzt hat und die Such-Prozedur über den Button "Suchen" in Gang gesetzt hat, ist es nicht mehr möglich, die ComboBox für die Grundstücksnummer zur Suche zu nutzen. D.h. es ist zwar möglich, führt aber zu falschen Ergebnissen.
Weitere Versuche meinerseits z.B. END IF oder x = 0 zu Beginn oder zum Ende der Such-Prozedur ändern an der oben beschriebenen Problem ebenfalls nichts.
Vielleicht wäre es sinnvoller, einen zweiten Such-Button (SUCHE NAMEN & SUCHE GRUNDSTÜCK) in das UserForm einzufügen.
Ratlose Grüße in das schöne Köln.
Thomas B.
Anzeige
AW: ComboBox als Variable
11.05.2006 23:06:49
Mustafa
Hallo Thomas,
wie sucht der User denn zum zweiten mal nach Daten?
Löscht er den Inhalt der ersten Combobox, oder versucht er es bei beschriebener Combobox?
Der Code überprüft ob die Combobox cboName leer ist, wenn nicht wird für x der ListIndex von der cboName genommen, und dies führt dann dazu das falsche Daten eingeholt werden.
Wie gesagt eine der Comboboxen muss immer leer sein damit das richtig Funktioniert.
Eine möglichkeit wäre die UserForm zum neueinlesen der Daten über einen zusätzlichen Button, oder nach dem schreiben der Daten in die Tabelle in Urzustand zu bringen.
Rückmeldung obs Hilft wäre nett.
Viele Grüße aus Köln.
Anzeige
AW: ComboBox als Variable
12.05.2006 09:41:49
Thomas
Hallo Mustafa,
die Diskussion mit Dir hat mich hinsichtlich des Problem sowie dessen Lösung weitergebracht! Vor allem wegen Deines letzen Beitrages:
"(...)wie sucht der User denn zum zweiten mal nach Daten?"
Tja - eigentlich der richtige Ansatz. Denn es ist sachlich und logisch nicht begründbar, dass der Anwender SOWOHL mit dem Namen als Suchargument ALS AUCH mit der Grundstücksnummer als Suchargument gleichzeitig arbeitet. Es kann nur ein ENTWEDER / ODER geben.
"Löscht er den Inhalt der ersten Combobox, oder versucht er es bei beschriebener Combobox?"
Hier lag - so vermute ich - mein "Denk"fehler, der zu einer falschen Erwartung an das UserForm geführt hat. Der Inhalt der ersten ComboBox wird nämlich nicht gelöscht, sondern der Anwender versucht eine weitere Suche bei beschriebener ComboBox "... und dies führt dann dazu das falsche Daten eingeholt werden."
Insofern ergeben sich, wie Du richtigerweise beschreibst, u.a. folgende Lösungsmöglichkeiten:
"Eine möglichkeit wäre die UserForm zum neueinlesen der Daten über einen zusätzlichen Button (...)"
"(...) oder nach dem schreiben der Daten in die Tabelle in Urzustand zu bringen."
Darüber hinaus halte ich folgende Ansätze für bedenkenswert:
- Verzicht auf die Möglichkeit von zwei Suchschlüsseln und Festlegung auf den wesentlichen Suchschlüssel (Name)
- Für den Fall, dass mein Kollege eine separate Suche nach der Grundstücksnummer wünscht, wird das UserForm um einen entsprechenden Button (SUCHE GRUNDSTÜCK) ergänzt.
Ich bedanke mich für Deine Unterstützung bei der Lösung meines Problems sowie der weiterführenden Diskussion hierzu.
Maach ett joot.
Thomas B.
Anzeige
Danke für die Rückmeldung mT
12.05.2006 23:13:08
Mustafa
Hallo Thomas,
ich bin erfreut zu hören das ich dir helfen konnte.
Noch mehr Freude bereitet es mir das du nicht wie manch anderer einfach nur fertige Code suchst sondern dir gedanken machst.
Wünsche dir noch viel Erfolg bei deinen zukünftigen Projekten.
Ich bin mit meinem beschränkten Wissen zwar nur nachts online, aber auch nachts kann man Probleme lösen.:-)
Viele Grüße aus Köln.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige