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

Forumthread: Userform Textboxinhalte in Zellen schreiben

Userform Textboxinhalte in Zellen schreiben
11.08.2008 14:33:59
Gerd
Guten Tag zusammen!
Bitte helft mir bei folgendem Problem:
In einer Userform habe ich eine ganze Reihe Textboxen, in die zum größten Teil Zahlen eingegeben werden.
Nun ist ja bekannt, dass beim Schreiben in Zellen der Inhalt der Textboxen als Text interpretiert wird. Mit der Anweisung CDbl kann man aber ja umwandeln und Kommazahlen werden rechtsbündig dargestellt.
Nun habe ich in der Userform wie gesagt eine ganz Reihe Textboxen, die in zum Teil nicht zusammenhängende Zellbereich geschrieben werden müssen.
Nach etlichen Versuchen der Schleifenbildung blieb mir nichts anderes, als Folgendes:
If UserForm1.tb1.Value "" Then Range("d91") = CDbl(UserForm1.tb1.Value) _
Else Range("d91") = UserForm1.tb1.Value
If UserForm1.tb2.Value "" Then Range("i91") = CDbl(UserForm1.tb2.Value) _
Else Range("i91") = UserForm1.tb2.Value
If UserForm1.tb3.Value "" Then Range("i92") = CDbl(UserForm1.tb3.Value) _
Else Range("i92") = UserForm1.tb3.Value
If UserForm1.tb4.Value "" Then Range("i93") = CDbl(UserForm1.tb4.Value) _
Else Range("i93") = UserForm1.tb4.Value
If UserForm1.tb5.Value "" Then Range("i94") = CDbl(UserForm1.tb5.Value) _
Else Range("i94") = UserForm1.tb5.Value
If UserForm1.tb6.Value "" Then Range("i95") = CDbl(UserForm1.tb6.Value) _
Else Range("i95") = UserForm1.tb6.Value
If UserForm1.tb7.Value "" Then Range("i96") = CDbl(UserForm1.tb7.Value) _
Else Range("i96") = UserForm1.tb7.Value
If UserForm1.tb8.Value "" Then Range("k91") = CDbl(UserForm1.tb8.Value) _
Else Range("k91") = UserForm1.tb8.Value
If UserForm1.tb9.Value "" Then Range("k92") = CDbl(UserForm1.tb9.Value) _
Else Range("k92") = UserForm1.tb9.Value
If UserForm1.tb10.Value "" Then Range("k93") = CDbl(UserForm1.tb10.Value) _
Else Range("k93") = UserForm1.tb10.Value
If UserForm1.tb11.Value "" Then Range("k94") = CDbl(UserForm1.tb11.Value) _
Else Range("k94") = UserForm1.tb11.Value
If UserForm1.tb12.Value "" Then Range("k95") = CDbl(UserForm1.tb12.Value) _
Else Range("k95") = UserForm1.tb12.Value
If UserForm1.tb13.Value "" Then Range("k96") = CDbl(UserForm1.tb13.Value) _
Else Range("k96") = UserForm1.tb13.Value
If UserForm1.AV.Value "" Then Range("g42") = CDbl(UserForm1.AV.Value) _
Else Range("g42") = UserForm1.AV.Value
If UserForm1.KV.Value "" Then Range("G43") = CDbl(UserForm1.KV.Value) _
Else Range("g43") = UserForm1.KV.Value
If UserForm1.PV.Value "" Then Range("g44") = CDbl(UserForm1.PV.Value) _
Else Range("g44") = UserForm1.PV.Value
If UserForm1.RV.Value "" Then Range("g45") = CDbl(UserForm1.RV.Value) _
Else Range("g45") = UserForm1.RV.Value
If UserForm1.ZV.Value "" Then Range("g46") = CDbl(UserForm1.ZV.Value) _
Else Range("g46") = UserForm1.ZV.Value
If UserForm1.BuchstC.Value "" Then Range("G48") = CDbl(UserForm1.BuchstC.Value) _
Else Range("g48") = UserForm1.BuchstC.Value
If UserForm1.BuchstD.Value "" Then Range("g49") = CDbl(UserForm1.BuchstD.Value) _
Else Range("g49") = UserForm1.BuchstD.Value
If UserForm1.BuchstE.Value "" Then Range("g50") = CDbl(UserForm1.BuchstE.Value) _
Else Range("g50") = UserForm1.BuchstE.Value
If UserForm1.BuchstF.Value "" Then Range("g51") = CDbl(UserForm1.BuchstF.Value) _
Else Range("g51") = UserForm1.BuchstF.Value
If UserForm1.BuchstCang.Value "" Then Range("h48") = CDbl(UserForm1.BuchstCang.Value) _
Else Range("h48") = UserForm1.BuchstC.Value
If UserForm1.BuchstDang.Value "" Then Range("h49") = CDbl(UserForm1.BuchstDang.Value) _
Else Range("h49") = UserForm1.BuchstD.Value
If UserForm1.BuchstEang.Value "" Then Range("h50") = CDbl(UserForm1.BuchstEang.Value) _
Else Range("h50") = UserForm1.BuchstE.Value
If UserForm1.BuchstFang.Value "" Then Range("h51") = CDbl(UserForm1.BuchstFang.Value) _
Else Range("h51") = UserForm1.BuchstF.Value
If UserForm1.UStdges.Value "" Then Range("e59") = CDbl(UserForm1.UStdges.Value) _
Else Range("e59") = UserForm1.UStdges.Value
If UserForm1.UStdLand.Value "" Then Range("e60") = CDbl(UserForm1.UStdLand.Value) _
Else Range("e60") = UserForm1.UStdLand.Value
If UserForm1.Abs1Direkt.Value "" Then Range("f81") = CDbl(UserForm1.Abs1Direkt.Value) _
Else Range("f81") = UserForm1.Abs1Direkt.Value
If UserForm1.Abs1NVK.Value "" Then Range("F82") = CDbl(UserForm1.Abs1NVK.Value) _
Else Range("f82") = UserForm1.Abs1NVK.Value
Fällt einem von euch irgendetwas ein, wie man so etwas zusammenfassen kann?
Vielen Dank im Voraus!
Gerd

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Textboxinhalte in Zellen schreiben
12.08.2008 10:17:00
fcs
Hallo Gerd,
da du sinnvoller Weise den meisten Formularfeldern aussagekräftige Namen gegeben hast, kann du die Werte in der VBA-Anweisung auch nur zeilenweise in die Tabelle zurückschreiben.
Ist ja auch nicht weiter schlimm, da du den VBA-Code ja nur einmal schreiben muss.
Eine Übergabe von Formularwerten in eine Tabelle ist nur in einer Schleife möglich, wenn die Namen der Formularfelder eine fortlaufende Nummer enthalten und diese systematisch Zeilen/Spalten im Tabellenblatt zugeordnet werden können.
Gruß
Franz

Anzeige
AW: Userform Textboxinhalte in Zellen schreiben
13.08.2008 11:29:23
Gerd
Hallo Franz!
Ein anderer User hat mir diese Lösung geschickt, die einwandfrei funktioniert, obwohl die Textboxen eindeutige und nicht fortlaufend numerierte Namen haben:

Jedes Steuerelement hat eine TAG-Eigenschaft, die du frei nutzen kannst. Wenn du einmalig für  _
jede Textbox den Zellbezug in die Tag-Eigenschaft schreibst, dann kannst du mit dieser Schleife alle Textboxen auf einmal in die Tabelle zurückschreiben:
Dim cls As Control
For Each cls In UserForm1.Controls
If cls.Tag  "" Then
If IsNumeric(cls.Value) Then
Range(cls.Tag) = CDbl(cls.Value)
Else
Range(cls.Tag) = ""
End If
End If
Next


Trotzdem vielen Dank für Deine Antwort.
Gerd

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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