Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Auslesen von Textbox-Inhalten einer Userform

Forumthread: Auslesen von Textbox-Inhalten einer Userform

Auslesen von Textbox-Inhalten einer Userform
29.12.2006 07:53:11
Textbox-Inhalten
Hallo zusammen,
ich lasse mir aus einer Kontenliste (Anzahl der Konten ist variabel) eine Userform erstellen, in die automatisch Textboxen generiert werden, in die der Anwender Salden schreibt. Diese Textboxen werden in verschiedene ebenfalls automatisch erstellte Frames (pro Bank ein Frame, pro Konto eine Textbox) gesetzt.
Da sowohl Frames als auch Textboxen automatisch nummeriert werden, weiß ich nicht, wie ich die Inhalte (Salden) auslesen bzw. in eine Zelle zurückschreiben kann.
Schön wäre eine solche Lösung
For X = 1 to 10 'Anzahl der Frames = Anzahl der Banken
For Y = 1 to 10 'Anzahl der Textboxen = Anzal der Konten der jeweiligen Bank
Cells(X, Y) = Userform1.frameX.TextboxY
Next Y
Next X
Das funktioniert aber nicht, weil ich nicht weiß, wie die Syntax für eine variablen FrameX bzw. eine variable TextboxY ist.
Außerdem ist die Anzahl der Frames bzw. Textboxen (im oberen Beispiel = 10) variabel. Ich weiß also nicht, wie oft die einzelnen For-Next-Schleifen zu durchlaufen sind.
Danke vorab.
Stephan
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auslesen von Textbox-Inhalten einer Userform
29.12.2006 08:02:16
Textbox-Inhalten
Hallo Stephan,
als ob ich es geaht hätte das diese Frage kommt, nachdem du ja nun Franes und Textboxen dynamisch erstellen kannst :-)
Kannst du mal ne Beispieldatei machen wo ein paar Daten und die Userform schon drin in der du die Frames und Textboxen dynamisch erstellst.
Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Auslesen von Textbox-Inhalten einer Userform
29.12.2006 12:22:35
Textbox-Inhalten
Hallo Stephan,
damit 2006 nicht ohne Info endet.
Eine Möglichkeit einfach alle Controls der UserForm durchgehen und wenn eine Textbox dabei ist den Wert in die Tabelle schreiben.

Private Sub CommandButton2_Click()
Dim ctlinfo As Control
Dim lngI As Long
lngI = 1
For Each ctlinfo In Me.Controls
If TypeName(ctlinfo) = "TextBox" Then
ActiveSheet.Cells(lngI, 1) = ctlinfo.Value
lngI = lngI + 1
End If
Next ctlinfo
End Sub

Oder du legst dir eine eigene Klasse an in der du die dynamisch erstellten Textboxen verwaltest und dann darauf zugreifen kannst. Alles dazu siehe hier http://www.online-excel.de/excel/grusel_vba.php?f=7
Oder du vergibst ber der Erstellung schon eindeutige Namen z.B. A12, A13, B27 usw also wo kommen die daten her wo sollen sie hin, damit du dann über den Namen beim zurückschreiben direkt auf die Zellen referenzieren kannst.
Oder, oder oder ...
Guten Rutsch und Gruß Heiko
PS: Rückmeldung wäre nett !
Anzeige
AW: Auslesen von Textbox-Inhalten einer Userform
02.01.2007 08:21:40
Textbox-Inhalten
Prima, vielen Dank. Damit bin ich wieder einen Schritt weiter. Danke für den Link, den muss ich allerdings erstmal in Ruhe "durchbrüten".
S.
;
Anzeige
Anzeige

Infobox / Tutorial

Textbox-Inhalte einer Userform in Excel auslesen


Schritt-für-Schritt-Anleitung

Um die Inhalte einer Textbox in einer Userform auszulesen, kannst du folgende Schritte befolgen:

  1. Erstelle eine Userform mit Textboxen, die dynamisch generiert werden.
  2. Füge einen CommandButton hinzu, der beim Klicken die Werte aus den Textboxen ausliest.
  3. Verwende den folgenden VBA-Code, um die Inhalte der Textboxen in ein Excel-Arbeitsblatt zu schreiben:
Private Sub CommandButton2_Click()
    Dim ctlinfo As Control
    Dim lngI As Long
    lngI = 1
    For Each ctlinfo In Me.Controls
        If TypeName(ctlinfo) = "TextBox" Then
            ActiveSheet.Cells(lngI, 1) = ctlinfo.Value
            lngI = lngI + 1
        End If
    Next ctlinfo
End Sub
  1. Dieser Code durchläuft alle Controls der Userform und überprüft, ob es sich um eine Textbox handelt. Wenn ja, wird der Inhalt in die erste Spalte des aktiven Arbeitsblatts geschrieben.

Häufige Fehler und Lösungen

  • Fehler: Keine Inhalte werden geschrieben.

    • Lösung: Stelle sicher, dass die Textboxen tatsächlich in der Userform existieren und dass der CommandButton korrekt mit dem Click-Ereignis verbunden ist.
  • Fehler: Laufzeitfehler bei der Ausführung.

    • Lösung: Überprüfe, ob der Typ der Controls richtig ist und ob du den richtigen Namen für die Userform verwendest.

Alternative Methoden

Es gibt verschiedene Ansätze, um Textfeld-Inhalte auszulesen:

  1. Verwenden einer Klasse: Du kannst eine eigene Klasse erstellen, die die dynamisch erstellten Textboxen verwaltet. Hiermit erhältst du mehr Kontrolle über die Objekte.
  2. Eindeutige Namen vergeben: Vergib beim Erstellen der Textboxen eindeutige Namen (z. B. A12, A13), um direkt auf die Zellen beim Zurückschreiben zuzugreifen.

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Textboxen in Frames organisieren kannst:

For X = 1 To 10 ' Anzahl der Frames
    For Y = 1 To 10 ' Anzahl der Textboxen
        ' Dynamische Erstellung von Textboxen in Frames
        Set NewTextbox = Me.Controls("Frame" & X).Controls.Add("Forms.TextBox.1", "Textbox" & Y)
        NewTextbox.Top = Y * 20
        NewTextbox.Left = 10
    Next Y
Next X

Mit diesem Beispiel kannst du die Textboxen in verschiedenen Frames anordnen und die Benutzer können ihre Salden eingeben.


Tipps für Profis

  • Verwende Error-Handling: Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler abzufangen und zu behandeln.
  • Optimierung der Performance: Bei einer hohen Anzahl an Textboxen kann die Performance beeinträchtigt werden. Überlege, ob du nur die benötigten Textboxen laden möchtest.
  • Datenvalidierung: Implementiere eine Validierung für die Eingaben in den Textboxen, um sicherzustellen, dass die Benutzer nur gültige Daten eingeben.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Textboxen dynamisch bestimmen?
Du kannst die Anzahl der Textboxen durch eine Zählvariable oder eine Abfrage anpassen, die die vorhandenen Werte überprüft.

2. Wie kann ich die Inhalte in andere Zellen als die erste Spalte schreiben?
Ändere den Code in der ActiveSheet.Cells(lngI, 1) Zeile, um die gewünschte Zeile und Spalte anzugeben, z. B. ActiveSheet.Cells(lngI, 2) für die zweite Spalte.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige