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

Forumthread: "Zusammengesetzte" Variablen

"Zusammengesetzte" Variablen
21.03.2005 23:20:22
Tom
Hallo allerseits
Vermutlich ist die Lösung meines Problems recht einfach, ich weiss aber leider gar nicht so recht, nach welchen Stichworten ich suchen soll (hab schon diverse Foren durchstöbert)...
Ich habe in einer Userform 72 Textboxen (tb_1, tb_2, etc.), deren Werte ich in eine Tabelle übertragen möchte. Damit ich die TB nicht einzeln ansprechen muss, möchte ich dies in einer Schleife über eine "zusammengesetzte" Variable tun.
Mit folgendem Code funktioniert das aber nicht. Was ist falsch? Und als welchen Datentyp muss ich 'ReiheA' definieren?
for i = 1 to 72
ReiheA = "tb_" & i
Cells(Zeile, Spalte).Value = ReiheA.Value
next i
Danke schon mal im Voraus...
Tom
Anzeige

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

Betreff
Datum
Anwender
Anzeige
...=Controls("tb_" & i) ...oT
21.03.2005 23:29:33
Boris
Grüße Boris
AW: "Zusammengesetzte" Variablen
21.03.2005 23:30:23
Björn
Hallo Tom,
Userform und Textboxen sind zwar nicht gerade mein Spezialgebiet, jedoch kann ich dir vielleicht eine Anregung geben.
Du weißt ReiheA den Wert tb_1 bis tb_72 zu. Das sind Strings, also ist ReiheA eine Stringvariable. Andererseits versuchst du ReiheA.Value auszulesen. In diesem Zusammenhang ist ReiheA eine Objektvariable. Da String Objekt ist, funktioniert das Makro nicht.
Das Auslesen der Textbox über tb_1.Value ist doch auch nur die Kurzform einer Anweisung die möglicherweise Textboxes("tb_1").Value oder so ähnlich lautet. Wenn du herausfindest, wie die Langform ist, dann kannst du "tb_1" durch die Stringvariable ReiheA ersetzen. Beispiel: statt Textboxes("tb_1").Value neu Textboxes(ReiheA).Value
Das müsste dann funktionieren.
Gruß
Björn
Anzeige
AW: "Zusammengesetzte" Variablen
21.03.2005 23:31:38
Josef
Hallo Tom!
Das geht so!

For spalte = 1 To 72
Cells(Zeile, spalte).Value = Controls("tb" & spalte)
Next

Gruß Sepp
P.S.: Rückmeldung nicht vergessen!


Anzeige
AW: "Zusammengesetzte" Variablen
22.03.2005 11:31:11
Tom
Danke an alle!
Die Lösung von Boris und Sepp funktioniert super!
Tom
Danke für die Rückmeldung - o. T.
22.03.2005 20:58:25
Björn
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Werte aus mehreren Textboxen in Excel übertragen


Schritt-für-Schritt-Anleitung

Um die Werte aus mehreren Textboxen in einer Userform in eine Excel-Tabelle zu übertragen, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt eine Schleife, um die Werte von 72 Textboxen (tb_1, tb_2, usw.) zu erfassen und in die Zellen einer Tabelle zu übertragen.

For spalte = 1 To 72
    Cells(Zeile, spalte).Value = Controls("tb" & spalte).Value
Next
  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere und füge den obigen Code in das Modul ein.
  4. Stelle sicher, dass Zeile vorher definiert ist, um die gewünschte Zeile in der Tabelle anzugeben.
  5. Führe das Makro aus, um die Werte zu übertragen.

Häufige Fehler und Lösungen

  • Fehler: "Objektvariable erforderlich"

    • Lösung: Stelle sicher, dass du die Controls korrekt ansprichst. Verwende Controls("tb" & spalte).Value anstelle von ReiheA.Value.
  • Fehler: Falscher Datentyp

    • Lösung: Der Datentyp von ReiheA sollte als String definiert sein, da du mit Textbox-Namen arbeitest.

Alternative Methoden

Eine alternative Methode zur Übertragung der Werte könnte die Verwendung eines Arrays sein. Damit kannst du die Werte temporär speichern, bevor du sie in die Tabelle schreibst. Hier ein Beispiel:

Dim Werte(1 To 72) As String
For i = 1 To 72
    Werte(i) = Controls("tb" & i).Value
Next i

For i = 1 To 72
    Cells(Zeile, i).Value = Werte(i)
Next i

Diese Methode kann bei der Verarbeitung großer Datenmengen nützlich sein.


Praktische Beispiele

Angenommen, du hast eine Userform mit 72 Textboxen, und du möchtest die Werte in die erste Zeile deiner Excel-Tabelle schreiben. Du würdest einfach die Variable Zeile auf 1 setzen und das Makro ausführen. Hier ist ein Beispiel:

Dim Zeile As Integer
Zeile = 1 ' Werte werden in die erste Zeile geschrieben

For spalte = 1 To 72
    Cells(Zeile, spalte).Value = Controls("tb" & spalte).Value
Next

Tipps für Profis

  • Nutze Option Explicit am Anfang deiner Module, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Verwende Debug.Print in deinem Code, um Werte während der Ausführung zu überprüfen. So kannst du Fehler schneller identifizieren.
  • Wenn du regelmäßig mit Userforms arbeitest, erwäge das Erstellen von benutzerdefinierten Steuerelementen für häufige Aufgaben.

FAQ: Häufige Fragen

1. Wie kann ich die Zeile dynamisch setzen? Du kannst die Zeile dynamisch setzen, indem du vor der Schleife den Wert aus einer Zelle abfragst, zum Beispiel:

Zeile = Cells(Rows.Count, 1).End(xlUp).Row + 1

2. Was mache ich, wenn ich mehr als 72 Textboxen habe? Du kannst die Schleife einfach anpassen, indem du die Obergrenze der Schleife änderst. Erhöhe den Wert in For spalte = 1 To 72 auf die gewünschte Anzahl deiner Textboxen.

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