314 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

Auf einem Excel Blatt liegen 70 Textfelder untereinander . Die Texte sollen nun da raus und in die Zellen daneben. Danach am Besten auch gleich die Textfelder löschen.
Ist das überhaupt möglich?

Über Tipps würde ich mich sehr freuen!

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)

Hallo Kathrin,

ich gehe mal davon aus, dass es sich um Textfelder aus den Formularsteuerelementen handelt. Das Makro gehört in ein Standardmodul deiner Arbeitsmappe:

Sub Textfeld()

Dim Feld As TextBox

'Schleife zum Ansprechen aller Shapes, die in dem Tabellenblatt
'vorhanden sind
For Each Feld In ActiveSheet.TextBoxes
 
    'Wenn der Objektname von links an gesehen in einer Länge von
    '7 Buchstaben das Wort "TextBox" ergibt, dann...
    If Left(Feld.Name, 7) = "TextBox" Then
        
         '...bei dem Übereinstimmenden Objekt...
        With Feld
           'den Text in die folgende Spalte schreiben
           Cells(.TopLeftCell.Row, .TopLeftCell.Column + 1) = .text
           'und das Textfeld löschen
           .Delete
        End With

    End If

Next

End Sub

Bei mir (Excel 2010) werden die Textfelder als TextBox bezeichnet. Sollte das Makro bei deiner Tabelle nicht funktionieren, so versuche mal die Zeile

If Left(Feld.Name, 7) = "TextBox" Then

wie folgt zu ändern:

If Left(Feld.Name, 8) = "Textfeld" Then

Probiere das Makro vorsichtshalber erst einmal in einer Kopie deiner Mappe aus.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.,

vielen Dank für die Antwort! Ich werde es demnächst testen und mich dann melden,  ob es geklappt hat.
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi,

wenn die Variable bereits als TextBox deklariert ist, muss nicht erst abgefragt werden, ob der Name mit "TextBox" beginnt - außerdem: was, wenn die TextBoxen umbenannt wurden?

Sub TexteUebergeben()
    Dim txtBox As TextBox
    For Each txtBox In ActiveSheet.TextBoxes
        txtBox.TopLeftCell.Offset(0, 1) = txtBox.Text
        txtBox.Delete
    Next txtBox
End Sub

Bis später, Karin

...