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

Forumthread: Textbox erstellen, umbenennen u.mit Zellbez.füllen

Textbox erstellen, umbenennen u.mit Zellbez.füllen
29.11.2017 21:59:33
Constantin
Hallo,
ich möchte TextBoxen erstellen, diese umbenennen (neue Bezeichnung aus einem Zellinhalt ableiten) und danach befüllen durch einen Formelbezug auf eine Zelle der gleichen Zeile.
In der beigefügten Mappe ist die Tabelle1 in den Spalten D (Werknr) und E (Text) befüllt. Nun möchte ich in Spalte G (für jede Werknr) zuerst eine TextBox in die Zelle einfügen. Danach sollen deren Name abgeändert werden (statt Textbox1 z.B. WNR4711). Zum Befüllen der TextBox soll eine Formel eingefügt werden mit Bezug auf Spalte E (der gleichen Zeile) und den Text übernehmen.
Leider gelang mir das Umbenennen nicht. Ein Ansatz ist der beigefügten Mappe zu entnehmen.

Die Datei https://www.herber.de/bbs/user/118001.xlsm wurde aus Datenschutzgründen gelöscht


Ich würde mich freuen, wenn jemand hierzu einen Tipp hätte.
Vielen Dank.
Grüße, Constantin
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textbox erstellen, umbenennen u.mit Zellbez.füllen
30.11.2017 11:32:25
Nepumuk
Hallo Constantin,
teste mal:
Public Sub neue_textbox()
    Dim rng As Range
    Dim tb As TextBox
    For Each rng In Range(Cells(6, 4), Cells(Rows.Count, 4).End(xlUp))
        With rng
            With .Offset(0, 3)
                Set tb = ActiveSheet.TextBoxes.Add(.Left, .Top, .Width, .Height)
            End With
            tb.Name = "Werknr " & .Text
            tb.Formula = "=" & .Offset(0, 1).Address
        End With
    Next
    Set tb = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Textbox erstellen, umbenennen u.mit Zellbez.füllen
30.11.2017 13:10:59
Nepumuk
Hallo Constantin,
vorher alle löschen geht so:
Public Sub neue_textbox()
    Dim rng As Range
    Dim tb As TextBox
    Call ActiveSheet.TextBoxes.Delete
    For Each rng In Range(Cells(6, 4), Cells(Rows.Count, 4).End(xlUp))
        With rng
            With .Offset(0, 3)
                Set tb = ActiveSheet.TextBoxes.Add(.Left, .Top, .Width, .Height)
            End With
            tb.Name = "Werknr " & .Text
            tb.Formula = "=" & .Offset(0, 1).Address
        End With
    Next
    Set tb = Nothing
End Sub

Gruß
Nepumuk
Anzeige
Textfelder erstellen, umbenennen und...
30.11.2017 11:40:16
Case
Hallo Constantin, :-)
... mit Text aus bestimmter Zelle befüllen (bezogen auf Deine Beispieldatei): ;-)
Option Explicit
Public Sub Main()
Dim objTextBox As TextBox
Dim shpShape As Shape
Dim lngTMP As Long
On Error GoTo Fin
Application.ScreenUpdating = False
With Tabelle1
For Each shpShape In .Shapes
If shpShape.TopLeftCell.Column = 7 Then
shpShape.Delete
End If
Next shpShape
For lngTMP = 6 To IIf(Len(.Cells(.Rows.Count, 5)), .Rows.Count, _
.Cells(.Rows.Count, 5).End(xlUp).Row)
Set objTextBox = .Shapes.AddTextbox(msoTextOrientationHorizontal, _
10, 10, 10, 10).OLEFormat.Object
With objTextBox
.Name = .Parent.Cells(lngTMP, 4).Value
.Left = .Parent.Cells(lngTMP, 7).Left
.Height = .Parent.Cells(lngTMP, 7).Height
.Top = .Parent.Cells(lngTMP, 7).Top
.Width = .Parent.Cells(lngTMP, 7).Width
.Text = "Werknr" & .Parent.Cells(lngTMP, 4).Value
End With
Next lngTMP
End With
Fin:
Application.ScreenUpdating = True
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Deine Datei zurück...
Servus
Case

Anzeige
Wer lesen kann...
30.11.2017 11:56:13
Case
Hallo, :-)
... ist klar im Vorteil. ;-)
Nepumuk hat's richtig, was Name und Inhalt angeht:
Option Explicit
Public Sub Main()
Dim objTextBox As TextBox
Dim shpShape As Shape
Dim lngTMP As Long
On Error GoTo Fin
Application.ScreenUpdating = False
With Tabelle1
For Each shpShape In .Shapes
If shpShape.TopLeftCell.Column = 7 Then
shpShape.Delete
End If
Next shpShape
For lngTMP = 6 To IIf(Len(.Cells(.Rows.Count, 5)), .Rows.Count, _
.Cells(.Rows.Count, 5).End(xlUp).Row)
Set objTextBox = .Shapes.AddTextbox(msoTextOrientationHorizontal, _
10, 10, 10, 10).OLEFormat.Object
With objTextBox
.Name = "Werknr" & .Parent.Cells(lngTMP, 4).Value
.Left = .Parent.Cells(lngTMP, 7).Left
.Height = .Parent.Cells(lngTMP, 7).Height
.Top = .Parent.Cells(lngTMP, 7).Top
.Width = .Parent.Cells(lngTMP, 7).Width
.Text = .Parent.Cells(lngTMP, 5).Value
End With
Next lngTMP
End With
Fin:
Application.ScreenUpdating = True
If Err.Number  0 Then MsgBox "Error: " & _
Err.Number & " " & Err.Description
End Sub
Servus
Case

Anzeige
AW: Wer lesen kann...
30.11.2017 21:09:26
Constantin
Hallo Nepumuk,
vielen Dank für Deine Lösung. Funktioniert super!!! Du hast auch schon weitergedacht mit dem Löschen. Genau das wollte ich versuchen noch reinzubringen. Allerdings sollten nur jene TextBoxen in diesem Tabellenblatt gelöscht werden, die mit "Werknr" im Namen beginnen. Der Befehl "Call ActiveSheet.TextBoxes.Delete" ist für mich besonders interessant, da ich ein Unterprogramm gesucht (und nicht gefunden) habe. Aber wie funktioniert dieser Befehl ohne weiteren Code?
Auch Dank an Case für seine Lösung. Bringt mich ebenfalls auf gute Ideen! Tolle Unterstützung.
Vielleicht habt ihr noch eine Lösung für die Einschränkung beim Löschen(?)
Grüße, Constantin
Anzeige
AW: Wer lesen kann...
30.11.2017 21:25:07
Constantin
Hallo Nepumuk,
vielen Dank für Deine Lösung. Funktioniert super!!! Du hast auch schon weitergedacht mit dem Löschen. Genau das wollte ich versuchen noch reinzubringen. Allerdings sollten nur jene TextBoxen in diesem Tabellenblatt gelöscht werden, die mit "Werknr" im Namen beginnen. Der Befehl "Call ActiveSheet.TextBoxes.Delete" ist für mich besonders interessant, da ich ein Unterprogramm gesucht (und nicht gefunden) habe. Aber wie funktioniert dieser Befehl ohne weiteren Code?
Auch Dank an Case für seine Lösung. Bringt mich ebenfalls auf gute Ideen! Tolle Unterstützung.
Vielleicht habt ihr noch eine Lösung für die Einschränkung beim Löschen(?)
Grüße, Constantin
Anzeige
AW: perfekt
30.11.2017 21:45:42
Constantin
Hallo Nepumuk und Case,
hab's mit dem Programmteil von Case hinbekommen. Spalte 7 reicht eigentlich auch als Eingrenzung. Super.
Grüße und Dank, Constantin
For Each shpShape In .Shapes
If shpShape.TopLeftCell.Column = 7 Then
shpShape.Delete
End If
Next shpShape
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Textboxen in Excel erstellen und befüllen


Schritt-für-Schritt-Anleitung

Um eine Textbox in Excel zu erstellen und diese mit Zellinhalten zu befüllen, befolge die folgenden Schritte:

  1. Öffne Excel und lade die Arbeitsmappe, in der Du die Textboxen erstellen möchtest.

  2. Öffne den VBA-Editor (drücke ALT + F11).

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:

    Public Sub neue_textbox()
       Dim rng As Range
       Dim tb As TextBox
       Call ActiveSheet.TextBoxes.Delete ' Löscht vorherige Textboxen
       For Each rng In Range(Cells(6, 4), Cells(Rows.Count, 4).End(xlUp))
           With rng.Offset(0, 3)
               Set tb = ActiveSheet.TextBoxes.Add(.Left, .Top, .Width, .Height)
               tb.Name = "Werknr " & rng.Text
               tb.Formula = "=" & rng.Offset(0, 1).Address
           End With
       Next rng
       Set tb = Nothing
    End Sub
  5. Schließe den VBA-Editor und gehe zurück zu Excel.

  6. Führe das Makro aus:

    • Gehe zu "Entwicklertools" > "Makros" > wähle neue_textbox und klicke auf "Ausführen".

Jetzt sollten die Textboxen in der entsprechenden Spalte erscheinen und mit den passenden Zellinhalten befüllt werden.


Häufige Fehler und Lösungen

  1. Textboxen werden nicht angezeigt:

    • Stelle sicher, dass Du das Makro aus dem richtigen Arbeitsblatt ausführst. Prüfe auch, ob die Textboxen hinter anderen Objekten verborgen sind.
  2. Falscher Zellbezug:

    • Überprüfe die Formel, die Du in der Textbox verwendest. Achte darauf, dass der Zellbezug korrekt ist.
  3. Makro funktioniert nicht:

    • Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe dazu zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" und aktiviere die Makros.

Alternative Methoden

Wenn Du eine Excel Textbox mit Formel erstellen möchtest, gibt es verschiedene Ansätze:

  • Manuelles Einfügen: Du kannst Textboxen direkt über das Menü "Einfügen" > "Formen" > "Textbox" hinzufügen und sie manuell benennen und befüllen.
  • Shapes verwenden: Statt Textboxen kannst Du auch Formen (Shapes) einsetzen, die ähnliche Funktionen bieten. Dies kann nützlich sein, wenn Du eine andere Art von Darstellung bevorzugst.

Praktische Beispiele

Hier sind einige Beispiele, wie man Textboxen in Excel verwenden kann:

  1. Dynamische Textboxen für Berichte: Erstelle Textboxen, die automatisch die Werte von Zellen anzeigen, um Berichte zu automatisieren.
  2. Interaktive Dashboards: Verwende Textboxen, um die wichtigsten Kennzahlen hervorzuheben und zu visualisieren.
Public Sub Beispiel()
    Dim tb As TextBox
    Set tb = ActiveSheet.TextBoxes.Add(100, 100, 200, 50)
    With tb
        .Text = "Hier ist eine wichtige Information"
        .Name = "InfoBox"
    End With
End Sub

Tipps für Profis

  • Verwendung von Variablen: Nutze Variablen, um die Textboxen dynamisch zu verwalten, besonders wenn Du mehrere benötigst.
  • Formatierung: Achte darauf, die Textboxen entsprechend zu formatieren (Schriftart, Größe), um die Lesbarkeit zu verbessern.
  • Event-Handling: Überlege, ob Du Event-Handler verwenden möchtest, um auf Änderungen in den Textboxen zu reagieren.

FAQ: Häufige Fragen

1. Wie kann ich eine Textbox in eine bestimmte Zelle einfügen? Du kannst die Position der Textbox mit der .Left und .Top Eigenschaft der Zelle anpassen, in die Du die Textbox einfügen möchtest.

2. Kann ich eine Textbox mit einem bestimmten Format erstellen? Ja, Du kannst die Eigenschaften der Textbox im VBA-Code anpassen, um Schriftart, Größe und Farbe festzulegen.

3. Wie lösche ich eine spezifische Textbox? Um eine spezifische Textbox zu löschen, kannst Du den Namen der Textbox verwenden und den Delete-Befehl aufrufen:

ActiveSheet.TextBoxes("NameDerTextbox").Delete

4. Wie kann ich eine Textbox mit einem Zellbezug befüllen? Nutze die Formula-Eigenschaft der Textbox, um den Zellbezug festzulegen, ähnlich wie im obigen Beispiel gezeigt.

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