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

Forumthread: Inhalte aus Steuerelementen mit Makro löschen

Inhalte aus Steuerelementen mit Makro löschen
litschis
Guten Morgen zusammen,
ich habe das erste Mal mit Steuerelementen gearbeitet und habe jetzt folgende Überlegung: Meine Datei umfasst sehr viele Textfelder und eine Handvoll Dropdown Menüs. Ich würde gerne eine Art "Alles zurücksetzen"-Button im Tabellenblatt einfügen, so dass alle Werte, die in die Textfelder eingetragen wurden, gelöscht und die Dropdown-Menüs auf das erste Auswahlfeld zurückgesetzt werden, wenn dieser Button gedrückt wird.
Ist so etwas mit einem Makro möglich? Ich habe leider noch keine Erfahrung mit VBA, habe lediglich mal ein paar Makros per Recorder aufgezeichnet...aber das scheint mir hier zu umständlich, wegen der über 400 Textfelder.
Habt ihr eine Lösung?
Vielen lieben Dank,
Litschis
Anzeige
AW: Inhalte aus Steuerelementen mit Makro löschen
12.10.2011 10:47:24
Beverly
Hi,
was für Steuerelemente verwendest du - aus der Formular-Symbolleiste oder der Steuerelemente-Toolbox?


AW: Inhalte aus Steuerelementen mit Makro löschen
12.10.2011 11:05:28
litschis
Hi,
also ehrlich gesagt weiß ich das gar nicht genau, das Dropdown-Menü habe ich mir aus einer anderen Datei kopiert und die Textfelder habe ich - meine ich - aus der Toolbox. Ich lade mal ein vereinfachtes Beispiel hoch, mit einem Dropdown und einem Textfeld und dem besagten Button, der evtl mit einem Makro hinterlegt dann meine Eingaben "wegzaubert" :-)
https://www.herber.de/bbs/user/76969.xls
Anzeige
Tabelle1.TextBox1.Text = "" & Range("A10") = ""
12.10.2011 11:41:45
Matthias
Hallo
Code in Tabelle1

Private Sub CommandButton1_Click()
Tabelle1.TextBox1.Text = ""
Range("A10") = ""
End Sub
Gruß Matthias
AW: Tabelle1.TextBox1.Text = "" & Range("A10") = ""
12.10.2011 12:27:56
litschis
Super, vielen Dank!!!
Habe für das Dropdown-Menü die "" durch eine 1 ersetzt, damit der Punkt angewählt wird. Jetzt habe ich ca. 400 Textfelder...muss ich hier die Zeile
Tabelle1.TextBox1.Text = ""
kopieren und immer wieder die Nummer der textbox entsprechend anpassen, oder gibt es eine schnellere/bessere Lösung?
Vielen Dank für die super Hilfe!
Anzeige
AW: Tabelle1.TextBox1.Text = "" & Range("A10") = ""
12.10.2011 12:32:08
Beverly
Hi Matthias,
weshalb sowohl Inhalt der TextBox als auch die verlinkte Zelle leeren? Eines von Beidem genügt, da beide miteinander "verlinkt" sind.


stimmt :o) oT
12.10.2011 12:33:18
Matthias
AW: Inhalte aus Steuerelementen mit Makro löschen
12.10.2011 12:22:47
Beverly
Hi,
du verwendest beide Steuerelement-Typen, was das ganze ein wenig kompliziert macht. Versuche es mal mit diesem Code:

Sub InhalteZuruecksetzen()
Dim shaShape As Shape
For Each shaShape In ActiveSheet.Shapes
If shaShape.Type = 12 Then
If shaShape.OLEFormat.progID = "Forms.TextBox.1" Then _
shaShape.DrawingObject.Object.Text = ""
ElseIf shaShape.Type = 8 Then
shaShape.ControlFormat.ListIndex = 0
End If
Next shaShape
End Sub



Anzeige
AW: Inhalte aus Steuerelementen mit Makro löschen
12.10.2011 14:18:02
litschis
Wooow...erstes mal VBA und war gar nicht so schwer ;-)
Also ich schreibe jetzt...

Private Sub CommandButton1_Click()
Range("Y13") = ""
Range("Y16") = ""
Range("Y33") = ""
Range("A6") = 1
Range("A21") = 1
Range("A25") = 1
End Sub
...wobei A6, A21, A25 meine Dropdown-Menüs sind und die Spalte Y meine Textfelder...davon habe ich aber ein paar mehr, um genau zu sein geht das ganze bis Y499. Habt ihr eine Idee, wie ich um das Kopieren und Angleichen der Zeilen herum komme? Ich stehe gerade auf dem Schlauch, möchte aber auch ungern über 400 mal kopieren und die Zeile angleichen.
Lieben Dank,
Litschis
Anzeige
AW: Inhalte aus Steuerelementen mit Makro löschen
12.10.2011 20:52:13
Beverly
Hi,
hast du meinen Code denn schon einmal getestet?


AW: Inhalte aus Steuerelementen mit Makro löschen
13.10.2011 11:34:22
litschis
Hi Berverly,
bis vor 2 Minuten hatte ich es noch nicht getestet *schäm*. Ich habe es nicht gleich nachvollziehen können und der andere Code schien simpler, aber da habe ich mich geirrt!! Dein Code funktioniert super, ich habe lediglich in folgender Zeile
shaShape.ControlFormat.ListIndex = 0
die 0 durch eine 1 ersetzt. Mit dem anderen Code, der jede einzelne Linked Cell auf o bzw. 1 setzt, rattert das Makro schon ziemlich lange, bei deinem Code gehts in einem Bruchteil einer Sekunde!
Also, vielen Dank nochmal dafür...Stück für Stück traue ich mich dann mehr mit VBA ;-)
Viele Grüße,
Litschis
Anzeige
AW: Inhalte aus Steuerelementen mit Makro löschen
14.10.2011 16:06:11
litschis
Hallo zusammen,
jetzt muss ich zu diesem Thema noch einmal eine Frage nachschießen:
Habe jetzt zusätzlich zu meinen Dropdown-Menüs und den Textfeldern eine Checkbox aus der Formular-Symbolleiste in mein Tabellenblatt installiert.
Um die Inhalte der Steuerelemente zurückzusetzen benutze ich Beverlys Code:

Private Sub CommandButton1_Click()
Dim shaShape As Shape
For Each shaShape In ActiveSheet.Shapes
If shaShape.Type = 12 Then
If shaShape.OLEFormat.progID = "Forms.TextBox.1" Then _
shaShape.DrawingObject.Object.Text = ""
ElseIf shaShape.Type = 8 Then
shaShape.ControlFormat.ListIndex = 1
End If
Next shaShape
End Sub
Jetzt habe ich wie gesagt das Kontrollkästchen dabei - wie könnte ich dieses in den Code einbauen? Ist das dann auch ein Shape.Type 8? Hier ist der List.Index ja auf 1 gesetzt. Ein Kontrollkästchen spuckt mir in der Linked Cell ja nur True/False aus.
Wie ihr seht bin ich überfodert ;-)
Hat jemand eine Idee?
Vielen Dank,
Litschis
Anzeige
AW: Inhalte aus Steuerelementen mit Makro löschen
14.10.2011 16:45:20
Beverly
Hi,

Private Sub CommandButton1_Click()
Dim shaShape As Shape
For Each shaShape In ActiveSheet.Shapes
If shaShape.Type = 12 Then
If shaShape.OLEFormat.progID = "Forms.TextBox.1" Then _
shaShape.DrawingObject.Object.Text = ""
ElseIf shaShape.Type = 8 Then
If shaShape.FormControlType = xlCheckBox Then
shaShape.ControlFormat = -4146
ElseIf shaShape.FormControlType = xlDropDown Then
shaShape.ControlFormat.ListIndex = 1
End If
End If
Next shaShape
End Sub



Anzeige
Vielen Dank!
17.10.2011 09:33:41
litschis
Vielen Dank für eure Hilfe! Funktioniert alles einwandfrei!
@Berverly: Noch einmal extra Dank an dich, dein Code ist super fix!
;

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

Steuerelemente in Excel zurücksetzen: Inhalte mit Makro löschen


Schritt-für-Schritt-Anleitung

  1. Öffne dein Excel-Dokument, das die Steuerelemente enthält.

  2. Füge einen Button ein, der das Makro ausführt. Gehe dazu auf die Registerkarte "Entwicklertools" und wähle "Einfügen". Wähle den "Befehlsschaltfläche" aus.

  3. Klicke mit der rechten Maustaste auf den Button und wähle "Code anzeigen".

  4. Füge den folgenden VBA-Code ein, um alle Texte in den Textfeldern zu löschen und die Auswahl in den Dropdown-Menüs zurückzusetzen:

    Private Sub CommandButton1_Click()
       Dim shaShape As Shape
       For Each shaShape In ActiveSheet.Shapes
           If shaShape.Type = 12 Then
               If shaShape.OLEFormat.progID = "Forms.TextBox.1" Then _
                   shaShape.DrawingObject.Object.Text = ""
           ElseIf shaShape.Type = 8 Then
               shaShape.ControlFormat.ListIndex = 0
           End If
       Next shaShape
    End Sub
  5. Schließe den VBA-Editor und teste den Button. Alle Inhalte aus den Steuerelementen sollten jetzt gelöscht werden.


Häufige Fehler und Lösungen

  • Fehler: Das Steuerelement lässt sich nicht löschen.

    • Lösung: Stelle sicher, dass das Steuerelement nicht geschützt ist. Überprüfe die Arbeitsblatteinstellungen.
  • Fehler: Der Code funktioniert nicht wie erwartet.

    • Lösung: Überprüfe, ob die Steuerelemente aus der richtigen Toolbox stammen (Formularsteuerelemente oder ActiveX).
  • Fehler: Das Dropdown-Menü bleibt unverändert.

    • Lösung: Stelle sicher, dass die ListIndex-Nummer im Code korrekt ist. Die erste Auswahl ist in der Regel 0.

Alternative Methoden

  • Manuelles Löschen: Du kannst die Inhalte der Textfelder und Dropdowns auch manuell löschen, allerdings ist dies bei vielen Steuerelementen sehr zeitaufwendig.

  • Verwendung von Makros: Du kannst ein Makro aufzeichnen, aber dies wird bei einer großen Anzahl von Steuerelementen unpraktisch, da du dann für jedes Steuerelement eine Zeile benötigst.


Praktische Beispiele

  1. Beispiel für Textfeld löschen:

    Tabelle1.TextBox1.Text = ""
  2. Beispiel für Dropdown zurücksetzen:

    Tabelle1.DropDown1.ListIndex = 0
  3. Komplettes Beispiel für mehrere Steuerelemente:

    Private Sub CommandButton1_Click()
       Dim i As Integer
       For i = 1 To 400 ' Anzahl der Textfelder
           Me.Controls("TextBox" & i).Text = ""
       Next i
       ' Dropdown zurücksetzen
       Me.DropDown1.ListIndex = 0
    End Sub

Tipps für Profis

  • Verwende Schleifen, um den Code effizienter zu gestalten, wenn du viele Steuerelemente hast.
  • Testen des Codes in einer Kopie deiner Datei, um Datenverlust zu vermeiden.
  • Dokumentiere deine Makros, damit du sie später leicht anpassen kannst.

FAQ: Häufige Fragen

1. Wie kann ich alle Steuerelemente in meinem Excel-Dokument löschen? Du kannst den folgenden Code verwenden:

Sub AlleSteuerelementeLoeschen()
    Dim shaShape As Shape
    For Each shaShape In ActiveSheet.Shapes
        shaShape.Delete
    Next shaShape
End Sub

2. Warum sind meine Textfelder ausgegraut? Das könnte daran liegen, dass das Formularsteuerelement in einem geschützten Zustand ist. Überprüfe die Schutzoptionen des Arbeitsblattes.

3. Wie kann ich ein Auswahlfeld in Word löschen? Das Vorgehen ist ähnlich wie in Excel, hier musst du das entsprechende Word-Steuerelement auswählen und löschen.

4. Gibt es eine Möglichkeit, ein Textfeld ohne Makro zu löschen? Ja, du kannst das Textfeld einfach auswählen und die Entf-Taste drücken, vorausgesetzt, das Arbeitsblatt ist nicht geschützt.

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