Startseite

Inhalte mehrerer Textboxen in Tabellenblatt übertragen

Häufig gibt es in UserForms mehrere Textboxen, deren Inhalte in ein Tabellenblatt übertragen werden sollen. Das kann man mit einer Schleife sehr elegant lösen.
Option Explicit
Private Sub CommandButton1_Click()
Dim obj As Object
Dim ziel As Long
Dim arr(10) As Variant
Dim az As Integer
ziel = Range("A65536").End(xlUp).Row
For Each obj In Me.Controls
    If Left(TypeName(obj), 7) = "TextBox" Then
        arr(az) = obj.Value
        az = az + 1
    End If
Next obj
Worksheets("Datenbank").Range("A" & ziel, "J" & ziel) = arr
End Sub
Im Beispielmakro werden die Inhalte von zehn Textboxen in ein Array übertragen und dann in die nächste freie Zeile der Tabelle geschrieben.
Wenn man die Möglichkeit genutzt hat, den Textboxen andere Namen zu geben, muss der Quelltext ein wenig verändert werden:
Option Explicit
Private Sub CommandButton3_Click()
Dim obj As Object
Dim ziel As Double
Dim arr(10) As Variant
Dim az As Integer
ziel = Range("A65536").End(xlUp).Row
For Each obj In Me.Controls
    If Left(obj.Name, 4) = "tebo" Then
        arr(az) = obj.Value
        az = az + 1
    End If
Next obj
Worksheets("Datenbank").Range("A" & ziel, "J" & ziel) = arr
End Sub

Alle Quelltexte eingefügt mit: Excel Code Jeanie
Die Änderung befindet sich in dieser Zeile:
If Left(obj.Name, 4) = "tebo" Then
Es wird nicht mehr der Typname des Objekts, sondern der vom Anwender vergebene Name referenziert. Das ist zum Beispiel nützlich, wenn man verschiedene Eingabebereiche in einem Formular verwenden möchte. Dann kann man über unterschiedliche Namen die gewünschten Objekte ansprechen. Der vollständigkeit halber sei erwähnt, dass diese Methode nur funktioniert, wenn die Objekte einer Gruppe den gleichen Grundnamen haben. Die Unterscheidung darf nur durch einen Anhang, wie zum Beispiel eine fortlaufende Ziffer erfolgen. Im vorliegenden Beispiel tebo1, tebo2 usw.