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

UserForm / TextBox füllen

Forumthread: UserForm / TextBox füllen

UserForm / TextBox füllen
18.08.2003 07:49:10
Erich M.
Hallo zusammen,
ich möchte bei einer UserForm folgendes erreichen:
1. Fülle ComboBox1 mit Zeile1, Spalte A-C (funktioniert bereits)
2. Wenn in ComboBox1 der Wert von A1 gewählt wird, fülle TextBox mit „A2:A10“), wenn B1, dann „B2:B10“ usw à hier ist dasProblem ??
Das nachfolgende Makro zeigt meine fehlerhaften Versuche (scheitere bereits bei A1):

Private Sub UserForm_Initialize()
Dim LoLetzte As Long
Dim LoI As Long
With Worksheets("Tabelle2")
For LoI = 1 To 3   'LoLetzte
ComboBox1.AddItem Format(.Cells(LoI, 1))
ComboBox1.List(LoI - 1, 1) = .Cells(1, LoI)
Next LoI
End With
End Sub
Private Sub ComboBox1_Change()
Dim Blatt As Object
Worksheets("Tabelle2").Activate
TextBox1.AddItem.Range ("A2:A10")
'    With TextBox1
'        .AddItem Worksheets("Tabelle2").Range("A2:A10").Value
'    End With
End Sub


Code eingefügt mit: Excel Code Jeanie
Besten Dank für eine Hilfe!,
mfg
Erich
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: UserForm / TextBox füllen
18.08.2003 07:59:50
PeterW
Hallo Erich,
einer Textbox kannst du nur einen Wert zuweisen

Private Sub UserForm_Initialize()
Dim strVar As String
Dim bCount As Byte
For bCount = 2 To 10
strVar = strVar & Worksheets("Tabelle2").Cells(bCount, 1) & Chr(10)
TextBox1 = strVar
Next
End Sub

Die Eigenschaft Multiline der Textbox muss auf True gesetzt werden.
Gruß
Peter

Anzeige
AW: UserForm / TextBox füllen
18.08.2003 09:04:59
Erich M.
Hallo Peter,
besten Dank. Kanns leider erst morgen früh probieren und melde micht evtl. nochmals.
Wenn ich das lese, habe ich aber den Eindruck, dass damit nur die Werte aus der Spalte A (Zellen 2 bis 10) eingetragen werden. Wenn ich nun die ComboBox mit der Zelle "B1" fülle, wie kommen dann die Zellen "B2:B10" in die TextBox?
Danke vorab!
mfg
Erich

Anzeige
AW: UserForm / TextBox füllen
18.08.2003 09:15:35
PeterW
Hallo Erich,
dein Eindruck ist richtig. :-) War auch nur als Beispiel gedacht, wie man eine Textbox mit einem Tabellenbereich füllen kann und wird hier ausgeführt beim Öffnen der UF. Die 1 in Cells(bCount, 1) durch eine Variable ersetzen und schon lässt sich jede beliebige Spalte ansprechen.
Gruß
Peter

Anzeige
AW: UserForm / TextBox füllen
18.08.2003 12:07:59
Erich M.
Hallo Peter,
danke nochmals (da habe ich zu kurz bzw. zu wenig gedacht)!
mfg
Erich

AW: UserForm / TextBox füllen
19.08.2003 07:34:33
Erich M.
Hallo Peter,
Dein Vorschlag hat natürlich gepasst. Allerdings habe ich festgestellt, dass ich die Frage nicht richtig gestellt habe. Für mein Problem benötige ich eine ListBox.
Ich habe zwar eine Lösung, die aber noch nicht optimal ist.
Ich habe deshalb hier eine neue Frage eingestellt:
https://www.herber.de/forum/archiv/296to300/t296589.htm
Besten Dank nochmal!
mfg
Erich

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

UserForm und TextBox in Excel VBA füllen


Schritt-für-Schritt-Anleitung

Um eine TextBox in einer UserForm mit Werten aus einem Excel-Blatt zu füllen, folge diesen Schritten:

  1. UserForm erstellen: Öffne den VBA-Editor (Alt + F11) und füge eine neue UserForm hinzu.

  2. ComboBox und TextBox hinzufügen: Platziere eine ComboBox (ComboBox1) und eine TextBox (TextBox1) auf der UserForm.

  3. Initialize-Ereignis implementieren: Füge folgenden Code in das UserForm-Modul ein, um die ComboBox mit den Werten aus den ersten drei Spalten zu füllen:

    Private Sub UserForm_Initialize()
       Dim LoI As Long
       With Worksheets("Tabelle2")
           For LoI = 1 To 3
               ComboBox1.AddItem .Cells(1, LoI).Value
           Next LoI
       End With
    End Sub
  4. ComboBox-Änderungsereignis implementieren: Füge den folgenden Code hinzu, um die TextBox basierend auf der Auswahl in der ComboBox zu füllen:

    Private Sub ComboBox1_Change()
       Dim strVar As String
       Dim bCount As Byte
       Dim spalte As Long
    
       spalte = ComboBox1.ListIndex + 1 ' ListIndex beginnt bei 0
       strVar = ""
    
       For bCount = 2 To 10
           strVar = strVar & Worksheets("Tabelle2").Cells(bCount, spalte).Value & Chr(10)
       Next bCount
    
       TextBox1.Value = strVar
    End Sub
  5. Einstellungen für die TextBox: Stelle sicher, dass die Eigenschaft Multiline der TextBox auf True gesetzt ist, damit mehrere Zeilen angezeigt werden können.


Häufige Fehler und Lösungen

  • Fehler: TextBox wird nicht gefüllt
    Lösung: Überprüfe, ob die ComboBox richtig initialisiert wurde und ob die richtigen Werte aus der Tabelle abgerufen werden.

  • Fehler: "Typen unverträglich"
    Lösung: Achte darauf, dass du die richtige Zelle und den richtigen Datentyp verwendest, wenn du Werte zuweist.

  • Fehler: TextBox zeigt nur den letzten Wert
    Lösung: Stelle sicher, dass die TextBox nicht in einer Schleife überschrieben wird. Verwende die &-Operation, um die Werte zu concatenieren.


Alternative Methoden

Eine alternative Methode zum Füllen einer TextBox in einer UserForm ist die Verwendung von ListBox, da diese mehrere Auswahlmöglichkeiten bietet. Der Code für eine ListBox kann ähnlich wie für eine TextBox verwendet werden, jedoch mit der AddItem-Methode:

Private Sub ComboBox1_Change()
    ListBox1.Clear
    Dim bCount As Byte
    Dim spalte As Long

    spalte = ComboBox1.ListIndex + 1
    For bCount = 2 To 10
        ListBox1.AddItem Worksheets("Tabelle2").Cells(bCount, spalte).Value
    Next bCount
End Sub

Praktische Beispiele

Um die oben genannten Konzepte besser zu verstehen, hier ein praktisches Beispiel:

  1. Tabelle2: Angenommen, du hast in Tabelle2 die folgenden Werte:

    A1: "Werte A"
    A2: "A1"
    A3: "A2"
    ...
    B1: "Werte B"
    B2: "B1"
    B3: "B2"
    ...
  2. UserForm: Wenn du in der ComboBox "Werte A" auswählst, wird die TextBox mit den Werten von A2:A10 gefüllt.


Tipps für Profis

  • Dynamisches Füllen: Du kannst die Anzahl der Zeilen dynamisch ermitteln, indem du UsedRange verwendest, um die letzte Zeile zu finden.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Laufzeitfehler zu vermeiden, z.B. mit On Error Resume Next.
  • VBA-Optimierung: Halte deine VBA-Formulare schlank und verwende With-Anweisungen, um die Lesbarkeit zu verbessern.

FAQ: Häufige Fragen

1. Frage
Wie kann ich eine TextBox mit Daten aus mehreren Spalten füllen?
Antwort: Du kannst die Schleife anpassen, um über mehrere Spalten zu iterieren und die Werte in der TextBox zu kombinieren, wie im Schritt 4 beschrieben.

2. Frage
Was mache ich, wenn die UserForm nicht erscheint?
Antwort: Stelle sicher, dass du die UserForm mit UserForm.Show im VBA-Code aufrufst. Überprüfe auch, ob es Fehler im Code gibt, die das Öffnen verhindern.

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