Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Userform Textboxinhalte in Zellen schreiben

Betrifft: Userform Textboxinhalte in Zellen schreiben von: Gerd Fänger
Geschrieben am: 11.08.2008 14:33:59

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

  

Betrifft: AW: Userform Textboxinhalte in Zellen schreiben von: fcs
Geschrieben am: 12.08.2008 10:17:51

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


  

Betrifft: AW: Userform Textboxinhalte in Zellen schreiben von: Gerd Fänger
Geschrieben am: 13.08.2008 11:29:23

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


 

Beiträge aus den Excel-Beispielen zum Thema "Userform Textboxinhalte in Zellen schreiben"