Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Array von Textboxen mit Zellwerten befüllen

VBA: Array von Textboxen mit Zellwerten befüllen
14.08.2018 10:04:50
Textboxen
Hallo zusammen,
ich möchte gerne folgendes erreichen: Aufgrund des 255 Zeichenlimits für Textboxen/-felder, möchte ich - im vorliegenden Fall 4 - mehrere Textboxen mit dem Inhalt bestimmter Zellen befüllen.
Exemplarisch für eine einzelne Box sieht mein Code wie folgt aus:
Sub FillTextBox()
Dim StrategyText As String
Dim StrategyBox As Shape
Set StrategyBox = ActiveSheet.Shapes("Textfeld 1")
StrategyText = Range("A1").Value
StrategyBox.TextFrame2.TextRange.Characters.Text = StrategyText
End Sub
Leider scheitere ich daran das Ganze in eine Schleife zu packen sowie daran die benötigten Shapes (4 Textboxen) und Textranges richtig definieren und ansteuern bzw. abrufen zu können.
Hier hatte ich soweit verstanden, dass ich die Textfelder sinnvollerweise als Variant und nicht als Shapes definieren sollte, da ich ein Array an Textboxen übergebe, also in etwa wie folgt:

Sub LoopThroughTxtFlds()
Dim TxtFld As Variant
Set TxtFld = Worksheets("Sheet1").Shapes.Range(Array("TxtFld1", "TxtFld2", "TxtFld3", " _
TxtFld4"))
[Schleife, um den Text aus einer ebenfalls zu definierenden Range von Zellen mit Text  _
nacheinander in die Arrays aus dem TxtFld zu pasten]
End Sub
Hinzu kommt, dass die Schleife nicht einfach mit einem Zähler von 1 beginnen kann, da sich auf dem Worksheet noch andere Shapes befinde; das oben definierte Array nimmt in meinem Fall aktuell bspw. die laufenden Nummer Shapes 2-5 an.
Vielleicht kann mir jemand ein wenig auf die Sprünge helfen.
Dank und Gruß
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Array von Textboxen mit Zellwerten befüllen
14.08.2018 10:16:54
Textboxen
Hallo,
Zitat: >> Aufgrund des 255 Zeichenlimits für Textboxen/-felder....
Woher hast du denn diese Fake-Information?
Ich kann KBytes in Textboxen (ob ActiveX oder Formularsteuerelement) laden!
Gruess Hansueli
AW: VBA: Array von Textboxen mit Zellwerten befüllen
14.08.2018 13:23:14
Textboxen
In die Textboxen soll kein fixer Text rein, sondern eine Verlinkung auf eine oder mehrere Zellen, die an sich auch wieder zusammengesetzte 'Text'-Formeln sind.
Und da ist bei 255 Zeichen bei mir Schluss.
Ich hatte parallel mit Word-Objects o.ä. herumgespielt, aber da kann ich nur harten Text eintragen und keinen variablen Inhalt verlinken.
Gruß
Anzeige
Immer wieder erstaundlich, wie...
14.08.2018 14:08:58
EtoPHG
Elemente 'vergewohltätigt' werden. Rene
Da kann ich Dir leider nicht weiterhelfen, den das Konstrukt verstehe ich nicht!
Gruess Hansueli
;
Anzeige
Anzeige

Infobox / Tutorial

Textboxen mit VBA in Excel befüllen


Schritt-für-Schritt-Anleitung

Um ein Array von Textboxen in Excel mit Zellwerten zu befüllen, kannst Du den folgenden VBA-Code verwenden. Dieser Code zeigt, wie Du mehrere Textboxen in einer Schleife ansprechen und mit den Werten aus einem Zellbereich befüllen kannst.

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“ und wähle „Einfügen“ > „Modul“.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub LoopThroughTxtFlds()
       Dim TxtFld As Variant
       Dim i As Integer
       Dim SourceRange As Range
    
       ' Definiere den Bereich mit den Zellen
       Set SourceRange = Worksheets("Sheet1").Range("A1:A4")
       ' Definiere das Array der Textfelder
       Set TxtFld = Worksheets("Sheet1").Shapes.Range(Array("TxtFld1", "TxtFld2", "TxtFld3", "TxtFld4"))
    
       ' Schleife durch die Textfelder
       For i = 1 To TxtFld.Count
           ' Fülle die Textfelder mit Werten aus dem Zellbereich
           TxtFld(i).TextFrame2.TextRange.Characters.Text = SourceRange.Cells(i, 1).Value
       Next i
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle „LoopThroughTxtFlds“ und klicke auf „Ausführen“.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden": Stelle sicher, dass die Namen der Textboxen im Code genau mit den Namen in Excel übereinstimmen.
  • Fehler: "Index außerhalb des Bereichs": Überprüfe, ob die Anzahl der Textboxen und der Zellwerte übereinstimmt. Wenn Du mehr Textboxen hast als Zellwerte, wird dieser Fehler auftreten.
  • Lösung für 255 Zeichenlimit: Wenn Du versuchst, mehr als 255 Zeichen in einer Textbox zu speichern, stelle sicher, dass Du die Textboxen korrekt konfiguriert hast, um lange Texte zu unterstützen.

Alternative Methoden

Eine alternative Methode besteht darin, die Textboxen direkt im Excel-Blatt zu verlinken, anstatt sie über VBA zu befüllen. Du kannst die Textboxen mit Formeln verknüpfen:

  1. Klicke mit der rechten Maustaste auf die Textbox.
  2. Wähle „Textfeld formatieren“.
  3. Gehe zum Tab „Steuerung“ und gebe die Zellreferenz ein, z.B. =A1.

Diese Methode eignet sich gut, wenn Du keine VBA-Kenntnisse hast und die Daten dynamisch aktualisieren möchtest.


Praktische Beispiele

Hier ist ein praktisches Beispiel, das den oben genannten VBA-Code nutzt. Angenommen, Du hast in den Zellen A1 bis A4 folgende Werte:

  • A1: "Wert 1"
  • A2: "Wert 2"
  • A3: "Wert 3"
  • A4: "Wert 4"

Wenn Du das Makro ausführst, werden die Textboxen „TxtFld1“, „TxtFld2“, „TxtFld3“ und „TxtFld4“ mit diesen Werten gefüllt.


Tipps für Profis

  1. Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um das Makro robuster zu machen. Zum Beispiel:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0
  2. Dynamische Arrays: Wenn Du die Anzahl der Textboxen und Zellwerte dynamisch gestalten möchtest, kannst Du die UBound-Funktion verwenden, um die Größe des Arrays zur Laufzeit zu bestimmen.

  3. Benutzerdefinierte Funktionen: Erstelle benutzerdefinierte Funktionen, um die Textboxen in anderen Modulen einfacher zu steuern.


FAQ: Häufige Fragen

1. Wie kann ich die Textboxen umbenennen? Du kannst die Textboxen im Excel-Blatt auswählen, mit der rechten Maustaste klicken und „Umbenennen“ wählen.

2. Was kann ich tun, wenn mein VBA-Code nicht funktioniert? Überprüfe die Schreibweise der Objekt- und Variablenbezeichnungen. Stelle sicher, dass alle Verweise korrekt sind und dass Du die richtigen Blätter und Zellbereiche ansprichst.

3. Kann ich mehrere Zellbereiche gleichzeitig ansprechen? Ja, Du kannst mehrere Zellbereiche definieren und sie in einer Schleife durchlaufen, um unterschiedliche Textboxen mit unterschiedlichen Werten zu befüllen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige