Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Userform Combobox Texteintrag


Betrifft: Userform Combobox Texteintrag von: Hans-Jürgen
Geschrieben am: 24.10.2019 09:28:52

Hallo Wissende,

ich bastele immer noch ein Frontend, mit der die Anwender eine Access-Datenbank befeuern.

Ich brauche eine Userform mit zwei Comboboxen:
1) in der ersten Box soll eine Liste angezeigt werden, die aus der Datenbank geholt wird. Dieser Teil ist noch nicht fertig, aber mit Schleife und AddItem soll das kein Problem sein. Ich möchte allerdings auch, dass der Anwender einen freien Text eingeben kann.
2) Abhängig von der Auswahl bzw. der manuellen Eingabe aus 1 werden hier weitere Auswahlen angezeigt.

Zum Ablauf: Erst nach Auswahl von 1 und 2 gibt der Anwender in eine Textbox etwas ein und drückt eine Schaltfläche.

Meine Fragen:
- Nach der Auswahl von 1) möchte ich eigentlich vermeiden, dass eine Schaltfläche nötig ist - das System soll selbst erkennen, wenn die Eingabe erfolgt ist und aufgrunddessen die Box 2 zusammenstellen. Ich habe das Ereignis MeinFormular_Change entdeckt. Das funktioniert perfekt, sobald es um die Listauswahl geht. Wenn aber der User was eingibt, tritt das Ereignis (logischerweise!) schon nach dem ersten Buchstaben ein. Ich würde gern das Ereignis eintreten lassen, sobald der Anwender Tab oder Enter gedrückt hat. Wie kann ich das anstellen?

- Wenn ich die erste Hürde genommen habe, also ein definiertes Ergebnis von Box 1 habe, muss ich ja die Box 2 mit Datenbankwerten initialisieren. Stelle ich mir das richtig vor, dass ich die Additems der zweiten Box in das Change-Ereignis der ersten Box packe?

- Wie gesagt, am Ende kommt ja erst die Eingabe. Am liebsten wäre es mir, wenn diese Textbox erst zu sehen ist, wenn die beiden Comboboxen gefüllt sind. Ist das machbar?

Vielen Dank im voraus

Hans-Jürgen

  

Betrifft: AW: Userform Combobox Texteintrag von: Werner
Geschrieben am: 24.10.2019 09:59:42

Hallo Hans-Jürgen,

dann benutze doch das After Update Event der ComboBox1.

Private Sub UserForm_Initialize()
'TextBox1 ausblenden
Me.TextBox1.Visible = False
'Eintrag in ComboBox1 hinzufügen
Me.ComboBox1.AddItem "Hallo Hans-Jürgen"
End Sub

Private Sub ComboBox1_AfterUpdate()
'eingetragenen Eintag in ComboBox2 einfügen
Me.ComboBox2.AddItem Me.ComboBox1
'TextBox anzeigen wenn Einträge in ComboBox1 und ComboBox2 vorhanden sind
Me.TextBox1.Visible = Me.ComboBox1.ListCount > 0 And Me.ComboBox2.ListCount > 0
End Sub
Gruß Werner


  

Betrifft: AW: Userform Combobox Texteintrag von: Hans-Jürgen
Geschrieben am: 24.10.2019 12:56:49

Hallo Werner,

vielen Dank zunächst, das hilft mir schon etwas weiter. Ich bleibe jetzt erst noch bei meiner ersten Frage (Freitext), und da habe ich noch ein Problem.

Weil ich den übergebenen Inhalt nicht direkt in die zweite Box eintragen kann (da muss vorher noch eine Datenbankrecherche rein), wollte ich mir erstmal in der Prozedur ComboboxName_AfterUpdate den übergebenen Inhalt per MSGBOX anzeigen lassen.

Wenn man den Inhalt über die Auflistung auswählt, klappt es genau wie unter Change. AfterUpdate bringt mir den Vorteil, dass er die Prozedur nicht gleich beim ersten Buchstaben aufruft.

Allerdings... er ruft sie überhaupt nicht auf ;-)) Ich habe meinen Beispieltext eingegeben und alle möglichen einschlägigen Tasten ausprobiert, um das Update "abzuschließen", aber nichts half.

Danke nochmals für die Unterstützung!


  

Betrifft: AW: Userform Combobox Texteintrag von: Hans-Jürgen
Geschrieben am: 24.10.2019 13:17:50

Selbstedit: Ich habe das Keydown-Ereignis nun hingebastelt bekommen, klappt wunderbar.

dim n as long
for n = 1 to 1000
  msgbox "Danke, Werner !!!"
next



  

Betrifft: AW: Userform Combobox Texteintrag von: Werner
Geschrieben am: 24.10.2019 13:18:44

Hallo,

was dein weiterer Code macht, weiß ich nicht.

Private Sub ComboBox1_AfterUpdate()
If Me.ComboBox1 <> "" Then
    MsgBox Me.ComboBox1
End If
End Sub
Gruß Werner


Beiträge aus dem Excel-Forum zum Thema "Userform Combobox Texteintrag"