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

Forumthread: Excel VBA TextBox deklarieren

Excel VBA TextBox deklarieren
22.08.2018 16:10:05
DerDeklarator
Hallo zusammen,
ich habe einige TextBoxen (ActiveX-SE) in ein Worksheet eingebunden. Diese würde ich nun gerne deklarieren, damit ich beim Ansprechen der TextBoxen nicht immer mit "Rattenschwanz" operieren muss. Beispiel-Code:
Option Explicit
Sub Deklaration()
Dim CB_01 As ComboBox
Dim TB_01 As TextBox
Set CB_01 = ActiveWorkbook.Sheets(1).ComboBox1
Set TB_01 = ActiveWorkbook.Sheets(1).TextBox1
MsgBox TB_01.Value
MsgBox CB_01.Value
End Sub

Die ComboBox funktioniert einwandfrei. Die TextBox nicht. Was mache ich falsch?
Besten Dank bereits vorab!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA TextBox deklarieren
22.08.2018 16:23:50
Torsten
Deklarier mal beide als Object
AW: Excel VBA TextBox deklarieren
22.08.2018 16:51:27
DerDeklarator
Hallo Torsten,
danke für deinen Hinweis. Leider ist die Lösung noch nicht ausreichend.
Deklariere ich die TextBox via "Private" außerhalb der Sub und rufe den Wert der TextBox dann auf, funktioniert der Abruf von Value nicht.
Dank und Gruß
AW: Excel VBA TextBox deklarieren
22.08.2018 17:03:42
Torsten
Bei mir funktioniert das. Du meinst doch so:
Private TB_01 As Object
Sub Deklaration()
Dim CB_01 As Object
Set CB_01 = ActiveWorkbook.Sheets("Sheet2").ComboBox1
Set TB_01 = ActiveWorkbook.Sheets("Sheet2").TextBox1
MsgBox TB_01.Value
MsgBox CB_01.Value
End Sub

Anzeige
AW: ActiveX-TextBoxen deklarieren
26.08.2018 11:17:51
Gerd
Moin
Option Explicit
Public TB As Variant, ct As Integer
Sub Installator()
Dim Element As OLEObject
ReDim TB(1 To 1)
For Each Element In Tabelle1.OLEObjects
If Element.progID = "Forms.TextBox.1" Then
ct = ct + 1
ReDim Preserve TB(1 To ct)
Set TB(ct) = Element.Object
End If
Next
End Sub
Sub Publicator()
For ct = LBound(TB) To UBound(TB)
MsgBox TB(ct).Value
Next
End Sub

Gruß Gerd
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel VBA TextBox deklarieren und nutzen


Schritt-für-Schritt-Anleitung

Um eine Excel TextBox in VBA zu deklarieren und zu nutzen, folge diesen Schritten:

  1. TextBox einfügen: Gehe in Excel zu Entwicklertools > Einfügen und wähle eine ActiveX-TextBox aus, um sie in dein Arbeitsblatt einzufügen.

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

  3. Modul hinzufügen: Klicke mit der rechten Maustaste auf VBAProject (dein Arbeitsblatt) und wähle Einfügen > Modul.

  4. Code eingeben: Füge den folgenden Code ein, um die TextBox zu deklarieren und ihren Wert abzurufen:

    Option Explicit
    
    Private TB_01 As Object
    
    Sub Deklaration()
       Set TB_01 = ActiveWorkbook.Sheets("Tabelle1").TextBox1
       MsgBox TB_01.Value
    End Sub
  5. Code ausführen: Schließe den VBA-Editor und führe das Makro über Entwicklertools > Makros aus.


Häufige Fehler und Lösungen

  • Fehler: Wert der TextBox nicht abrufbar
    Wenn du beim Abrufen des Wertes der TextBox eine Fehlermeldung erhältst, stelle sicher, dass du die TextBox korrekt als Object deklariert hast.

  • Lösung: Private Variable
    Deklariere die TextBox als Private außerhalb der Sub, um den Zugriff in verschiedenen Subs zu ermöglichen. Beispiel:

    Private TB_01 As Object
  • Fehler: "Typ nicht definiert"
    Wenn du die TextBox nicht finden kannst, überprüfe den Namen der TextBox im Eigenschaftenfenster. Sie sollte TextBox1 oder einen anderen Namen tragen, den du in deinem Code verwendest.


Alternative Methoden

Falls du eine Excel TextBox ohne ActiveX nutzen möchtest, kannst du die Forms.TextBox verwenden. Hier ein Beispiel, wie du dies in VBA umsetzen kannst:

Dim myTextBox As MSForms.TextBox
Set myTextBox = ActiveSheet.OLEObjects("TextBox1").Object
MsgBox myTextBox.Value

Diese Methode ist besonders nützlich, wenn du mehrere TextBoxen in einem Formular verwenden möchtest.


Praktische Beispiele

  1. Mehrere TextBoxen verwalten: Wenn du mehrere TextBoxen hast, kannst du sie in einem Array speichern und deren Werte so abrufen:

    Dim TB() As Object
    Dim ct As Integer
    ReDim TB(1 To 1)
    For Each Element In ActiveSheet.OLEObjects
       If Element.progID = "Forms.TextBox.1" Then
           ct = ct + 1
           ReDim Preserve TB(1 To ct)
           Set TB(ct) = Element.Object
       End If
    Next
  2. TextBox-Werte filtern: Du kannst die Werte der TextBoxen auch nutzen, um eine ListBox zu filtern. Hier ist ein einfaches Beispiel:

    Dim filterValue As String
    filterValue = TB_01.Value
    ' Code zum Filtern der ListBox basierend auf filterValue

Tipps für Profis

  • Verwende Option Explicit: Damit verhinderst du, dass unbeabsichtigte Variablen erstellt werden, was zu Fehlern führen kann.

  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme beim Zugriff auf die TextBox zu vermeiden.

  • Erstelle benutzerdefinierte Funktionen: Wenn du häufig mit TextBoxen arbeitest, erstelle Funktionen, die das Arbeiten mit den Controllern vereinfachen.


FAQ: Häufige Fragen

1. Wie kann ich eine ActiveX-TextBox in Excel erstellen?
Du kannst eine ActiveX-TextBox erstellen, indem du in den Entwicklertools auf Einfügen klickst und dann die ActiveX-TextBox auswählst.

2. Was ist der Unterschied zwischen einer ActiveX-TextBox und einer Forms.TextBox?
ActiveX-TextBoxen bieten mehr Anpassungsmöglichkeiten und sind flexibler, während Forms.TextBoxen einfacher zu implementieren sind und weniger Ressourcen benötigen.

3. Wie kann ich den Wert einer TextBox in eine Zelle schreiben?
Verwende den folgenden Code:

ActiveSheet.Range("A1").Value = TB_01.Value

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