Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1664to1668
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
Inhaltsverzeichnis

userform

userform
06.01.2019 09:11:36
Lukas
Hallo VBA Gemeinde
Ich habe eine Userform erstellt mit einer Textbox1.
Nun möchte ich wenn in der TextBox eine Zahl eingegeben wird
sich weitere TextBoxen in der Userform erstellen
BSP: wenn in der Textbox1 die Zahl 5 steht sollen 5 weitere TextBoxen erstellt werden

32
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Lösungsvorschlag
06.01.2019 09:40:49
Beverly
Hi Lucas,
wie viele TextBoxen sollen es denn maximal werden? Erstelle bereits entsprechend viele und setze ihre Eigenschaft Visible auf False - je nach Zahl in der TextBox blendest du dann entsprechend viele ein (Eigenschaft Visible auf True).


AW: Lösungsvorschlag
06.01.2019 09:46:05
Lukas
es sollen max 25 werden.
ja das wäre eine Möglichkeit,
hast du mir ein Beispiel
aber dann ist die Userform ja immer sehr gross.
AW: Lösungsvorschlag
06.01.2019 11:51:57
Beverly
Die Höhe muss natürlich immer neu angepasst werden - nach diesem Prinzip:
Option Explicit
Private Sub UserForm_Activate()
Me.Height = 110 + Me.TextBox1.Top
End Sub
Private Sub TextBox1_AfterUpdate()
Dim intBox As Integer
If IsNumeric(Me.TextBox1) Then
If CInt(Me.TextBox1) 

Dazu musst du die TextBoxen aber in der richtigen Reihenfolge benennen, also TextBox2, dann TextBox3, dann TextBox4 usw.


Anzeige
AW: Lösungsvorschlag
06.01.2019 15:53:44
Daniel
Hi
du kannst ja die Textboxen so anordnen, dass sie am unteren oder rechten Rand der Userform stehen.
dann kannst du nach dem Ein- und Ausblenden der Textboxen noch zusätzlich die Höhe oder Breite der Userform entsprechend anpassen.
Gruß Daniel
AW: userform
06.01.2019 09:43:22
Hajo_Zi
das die Auswertung der Eingaben in den neuen Textboxen nur über Klasse geht ist Dir ja klar.
Option Explicit
Private Sub TextBox5_AfterUpdate()
Dim LoI As Long
Dim obj_TxT As MSForms.TextBox                  ' Variable für Objekt als neuen  _
OptionButton
Dim loZaehler  As Long
loZaehler = 1
If IsNumeric(TextBox5) Then
For LoI = 1 To CInt(TextBox5)
Set obj_TxT = Me.Controls.Add("Forms.Textbox.1", "Textbox_Neu" & LoI, True)
With obj_TxT
.Left = 12                          ' Position links
.Top = 25 * loZaehler               ' Position oben
.Width = 150                        ' Breite
.Height = 25                        ' Höhe
End With
loZaehler = loZaehler + 1
Next LoI
End If
End Sub


Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
mit Höhe
06.01.2019 09:52:32
Hajo_Zi
ergänze vor End Sub
Me.Height = 25 * loZaehler + 35
Gruß Hajo
AW: mit Höhe
06.01.2019 10:10:22
Lukas
hmm habe deinen code Kopiert
aber leider passier da gar nichts
AW: mit Höhe
06.01.2019 10:19:23
Hajo_Zi
bei mir schon.
nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Original sehen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten anonymisieren bzw. pseudonymisieren.
Benutze hier im Forum die Funktion zum hochladen. Falls Du die nicht benutzen möchtest beachte, von unsicheren Servern wie z.B. www.file-upload.net lade ich keine Datei runter. (lt. Einschätzung meines Virenprogramms)
Gruß Hajo
Anzeige
AW: mit Höhe
06.01.2019 10:27:37
Hajo_Zi
Das ist mir nicht klar, Du möchtest textBox1 auswerten haste aber Private Sub TextBox5_AfterUpdate() für das Auswerten benutzt. Das geht nicht.
Gruß Hajo
AW: mit Höhe
06.01.2019 10:35:03
Lukas
wie dann
AW: mit Höhe
06.01.2019 10:38:09
Hajo_Zi
ich hätte vermutet es sollte das Ereignis von Textbox1 sein, den Code möchtest Du nicht ändern.
Blende Textbox5 ein und mache eine Eingabe.
Gruß Hajo
Anzeige
AW: mit Höhe
06.01.2019 11:25:23
Lukas
doch ich kann den code schon ändern aber wie
AW: mit Höhe
06.01.2019 11:28:05
Hajo_Zi
ich würde mal sagen das ist zu hoch für Dich, die Auswertung mit Klasse packst Du nicht.
Da es schon ein Problem ist den richtigen Texboxnamen in den Code zu schreiben.
Realisiere die Varianle von Beverly.
Ich bin ann raus.
Gruß Hajo
AW: mit Höhe
06.01.2019 13:31:51
Lukas
danke trotzdem für deine Hilfe
AW: mit Höhe
06.01.2019 11:26:39
Lukas
also wenn in der TextBox1 die Zahl 5 steht sollten 5 neue TextBoxen eröffnet werden
AW: mit Höhe
06.01.2019 13:52:28
Lukas
leider funktionier auch die Lösung von Beverley nicht
Funktioniert doch...
06.01.2019 14:48:06
Beverly
...schau dir die angehängte Mappe an.
https://www.herber.de/bbs/user/126525.xlsm
Wenn etwas nicht funktioniert, solltest du schon genau beschreiben WAS nicht funktioniert.


Anzeige
AW: Funktioniert doch...
06.01.2019 15:15:56
Lukas
Hallo Beverly, ja deine angefügte Datei funktioniert, nur ich möchte keinen Comanndbutton,
sondern wenn die Zahl in TextBox1 eingegeben wir sollen die weiteren TextBoxen automatisch Sichtbar werden
Der CommandButton ist nur...
06.01.2019 15:26:24
Beverly
...dazu da, dass die TextBox bei Drücken von Enter verlassen und ein anderes sichtbares Steuerelement angewählt werden kann, damit das AfterUpdate-Ereignis der TextBox ausgelöst wird - wenn kein weiteres sichtbares Steuerelement vorhanden ist, kann das AfterUpdate-Ereignis der TextBox nicht reagieren. Und wenn du mal einen Doppelklick auf den CommandButton machst wirst du sehen, dass darin überhaupt kein Code steht sondern nur bei TextBox1.
Ich nehme doch an, dass du außer der TextBox noch weitere sichtbare Steuerelemente (gleichgültig welcher Art) auf deinem UserForm hast...


Anzeige
AW: Der CommandButton ist nur...
06.01.2019 15:50:51
Lukas
OK, jetzt habe ich es Kapiert,
und es funktioniert
Es gibt aber noch ein Problem, wenn ich jetzt aber ein 2mal eine Zahl eingebe verändert sich nichts mehr
muss also die Userform erst verlasen um eine neue Eingabe zu machen
Was meinst du mit...
06.01.2019 16:10:50
Beverly
..."wenn ich jetzt aber ein 2mal eine Zahl eingebe"?
Der Code ist so ausgelegt, dass immer die Anzahl an TextBoxen eingeblendet wird, welche Zahl in TextBox1 steht - Beispiel: 3 wird eingegeben -&gt es werden 3 TextBoxen angezeigt. Danach wird 2 eingegeben -&gt es werden nur noch 2 TextBoxen angezeigt. Danach wird 5 eingegeben -&gt 5 TextBoxen werden angezeigt.


Anzeige
Eine Listbox statt viele Textboxen
06.01.2019 16:18:39
Daniel
Hi
nochmal ein anderer Ansatz:
verwende statt der vielen Textboxen eine Listbox.
die Anzahl der Elemente in der Listbox kannst du dann entsprechen der eingaben in die erste Textbox relativ einfach anpassen.
damit du Werte eingeben kannst, erstellst du eine zweite Textbox, welche du per Code mit der in der Listbox angeklickten Zeile vernküpfst.
Dh du übernimmst bei Klick auf die Listbox den Listboxtext in die Textbox und schreibst beim Ändern des Textes diesen an die entsprechende Stelle in der Listbox zurück.
hat den schönen effekt, dass du mit diesen drei Steuerelementen (2 Textboxen, eine Listbox) eine beliebige Anzahl von Textboxen simulieren kannst.
weiterhin brauchst du dich auch nicht um die größe zu kümmern, weil deine Listbox automatsich einen Scrollbalken bekommt, wenn die Anzahl der Elemente größer ist als die Höhe der Listbox.
Schau dir mal das Beispiel an
https://www.herber.de/bbs/user/126530.xlsm
Gruß Daniel
Anzeige
AW: userform
07.01.2019 16:58:25
Lukas
Hallo VBA Gemeinde
Ich habe eine Userform erstellt mit einer Textbox1.
Nun möchte ich wenn in der TextBox eine Zahl eingegeben wird
sich weitere TextBoxen in der Userform erstellen
BSP: wenn in der Textbox1 die Zahl 5 steht sollen 5 weitere TextBoxen erstellt werden
AW: userform
07.01.2019 17:03:05
Lukas
Super die Lösung von Beverley hat super funktioniert
Nun habe ich noch eine Frage gibt es eine Möglichkeit die Textbox2-5 auf Inhalt zu prüfen.
Und wenn nichts eingetragen ist eine Meldung generiert wird
TextBoxen prüfen ob leer...
07.01.2019 18:55:37
Beverly
...geht z.B. mit folgendem Code
    Dim intZaehler As Integer
Dim strAnzeige As String
For intZaehler = 2 To 5
If Me.Controls("TextBox" & intZaehler) = "" Then
strAnzeige = strAnzeige & vbLf & Me.Controls("TextBox" & intZaehler).Name
End If
Next intZaehler
If strAnzeige  "" Then MsgBox "Folgende TextBoxen sind leer:" & vbLf & strAnzeige


Anzeige
AW: TextBoxen prüfen ob leer...
07.01.2019 19:41:15
Lukas
Hi Beverly,
danke für deine schnelle Antwort, das funktionier ja genial,
nur werden mir ja alle 5 Textboxen abgefragt, ich möchte aber wenn ja in TextBox 2 drinsteht
das auch nur die 2 Abgefragt werden
AW: TextBoxen prüfen ob leer...
07.01.2019 22:09:04
Beverly
Hi Lukas,
du hast nur gefragt, wie man die TextBoxen 2 bis 5 prüft ob etwas drin steht - da stand nicht, dass es sich um die einzublendenden TextBoxen aus den vorhergehenden Beiträgen handelt...
Ändere die Schleife wie folgt:
    For intZaehler = 2 To 5
If Me.Controls("TextBox" & intZaehler) = "" Then
If Me.Controls("TextBox" & intZaehler).Visible Then _
strAnzeige = strAnzeige & vbLf & _
Me.Controls("TextBox" & intZaehler).Name
End If
Next intZaehler


AW: TextBoxen prüfen ob leer...
11.01.2019 13:55:52
Lukas
Hi Beverly
danke dir nochmals für deinen code der funktioniert super
Habe in der Zwischenzeit 50 TextBoxen welche ich mit TextBox1
einschalten kann.
Nun ist es aber so das wenn ich in TextBox1 20 einfüge ja TextBox2-21 Visibel geschalten werden.
Möchte aber jetzt auch abfragen ob das so ist und komme da nicht weiter.
Habe da ein wenig experimentiert hier mal mein code mit der Eingabe von 5
If Me.Controls(NummerErw1 = Visible & NummerErw2 = Visible & NummerErw3 = Visible & NummerErw4 = Visible & NummerErw5 = Visible & NummerErw6 = Visible).Visible Then
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).HorizontalAlignment = xlLeft
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).Value = NummerErw1.Value
With ThisWorkbook.Worksheets(Arbeitsfolie).Activate
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).Select
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).AddComment
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).Comment.Visible = False
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).Comment.Shape.TextFrame.AutoSize = True
Worksheets(Arbeitsfolie).Cells(lngZeile + 1, 7).Comment.Text Text:="GS-Nummer Erw:" & Chr(10) & (NummerErw2) & Chr(10) & (NummerErw3) & Chr(10) & (NummerErw4) & Chr(10) & (NummerErw5) & Chr(10) & (NummerErw6)
End With
AW: TextBoxen prüfen ob leer...
11.01.2019 14:49:37
Beverly
Hi Lukas,
Zitat: "Möchte aber jetzt auch abfragen ob das so ist..."
Wozu ist das erforderlich zu wissen?


AW: TextBoxen prüfen ob leer...
11.01.2019 15:00:07
Lukas
Hi Beverly
wenn die TextBoxen Visible sind werden da Werte eingetragen dich ich dan wenn es mehr als eine ist
in einen Kommentar(Comment) schreiben möchte
AW: TextBoxen prüfen ob leer...
11.01.2019 17:42:22
Beverly
Hi Lucas,
ich hatte dir doch am 07.01.2019 22:09:04 einen Code gepostet wie du prüfen kannst, ob die TextBoxen leer sind - dein jetziger Code müsste nach demselben Prinzip aufgebaut sein, nur dass eben nicht = "" sondern
 ""
abgefragt und auch nicht der TextBox-Name sondern der TextBox-Inhalt verwendet werden muss.


Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige