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

Forumthread: alle vorhandenen Button in allen Tabellen

alle vorhandenen Button in allen Tabellen
24.02.2009 21:20:39
Kurt
Guten Abend,
ich möchte gern alle vorhandenen Button löschen die sich in den Tabellen
befinden, es sind sehr viele.
Nur die Tabelle "k_Test" sollten die Button erhalten bleiben.
Alle Button sind Schaltflächen.
mfg Kurt aus K
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: alle vorhandenen Button in allen Tabellen
24.02.2009 21:29:09
Josef
Hallo Kurt,
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub SchalterWeg()
  Dim objWs As Worksheet
  Dim objShp As Shape
  
  For Each objWs In ThisWorkbook.Worksheets
    If objWs.Name <> "k_Test" Then
      For Each objShp In objWs.Shapes
        If objShp.Type = 8 Then objShp.Delete
      Next
    End If
  Next
End Sub

Gruß Sepp

Anzeige
Hallo Sepp
24.02.2009 21:38:32
Kurt
Hallo Sepp,
was heißt den die 8 ?
Könnte man auch vorhandene Commandbutton löschen ?
Könnte ja mit einem anderen Makro sein,
mfg Kurt aus K
AW: Hallo Sepp
24.02.2009 21:49:38
Daniel
Hi
8 bedeutet, daß nur Formular-Buttons gelöscht werden
Steuerlement-Buttons haben die 12 als Type-Nr
um rauszufinden, welche Objekte welche Nummern haben, mal einfach mal ein paar Objekte auf ein Tabellenblatt und lass dieses Makro laufen:

Sub Objekt_TypeNummern()
Dim obj
For Each obj In ActiveSheet.Shapes
Debug.Print obj.Name & "  -  " & obj.Type
Next
End Sub


die Ergebnisse werden im Direktfenster angezeigt.
Wenn du einfach alle Graphischen Objekte auf dem Tabellenblatt löschen willst, nimm dieses Makro


Sub SchalterWeg()
Dim objWs As Worksheet
For Each objWs In ThisWorkbook.Worksheets
If objWs.Name  "k_Test" Then objWs.DrawingObjects.Delete
Next
End Sub


Gruß, Daniel

Anzeige
AW: Hallo Sepp
24.02.2009 22:03:09
Josef
Hallo Kurt,
die acht ist der Wert der der MSOffice-Konstanten.
Etwas verändert, jetzt werden auch CommandButtons gelöscht.
Sub SchalterWeg()
  Dim objWs As Worksheet
  Dim objShp As Shape
  
  For Each objWs In ThisWorkbook.Worksheets
    If objWs.Name <> "k_Test" Then
      For Each objShp In objWs.Shapes
        If objShp.Type = msoOLEControlObject Then
          If objShp.OLEFormat.Object.progID = "Forms.CommandButton.1" Then objShp.Delete
        ElseIf objShp.Type = msoFormControl Then
          If objShp.FormControlType = xlButtonControl Then objShp.Delete
        End If
      Next
    End If
  Next
End Sub

Gruß Sepp

Anzeige
Schnell - manuell
24.02.2009 21:54:01
Renee
Hi Kurt,
Die Buttons können auch manuell relativ schnell gelöscht werden.
Aus der Zeichnungs-Commandbar das Auswahl-Tool (Pfeil) wählen.
Rahmen um die Buttons ziehen. Delete Taste drücken. Weg sind sie ;-)
GreetZ Renée
AW: noch schneller - Manuell
24.02.2009 22:08:54
Daniel
Wenn keine weiteren Objekte vorhanden sind, die erhalten bleiben sollen, dann kann man die Objekte auch über
BEARBEITEN - GEHT ZU - INHALTE - OBJEKTE markieren und anschließend löschen.
sollten allerdings Steuerelemente darunter sein, werden diese nur gelöscht, wenn man in den Entwurfsmodus wechselt.
gruß, Daniel
Anzeige
hier noch eine Version...
24.02.2009 21:56:07
Tino
Hallo,
hier meine VBA Version.
Sub LoescheButton()
Dim Area() As String
Dim i As Integer
Dim MySheet As Worksheet
Dim objButten As Shape

'Schleife über alle Tabellen 
For Each MySheet In ThisWorkbook.Worksheets
 'Tabelle k_Test auslassen 
 If MySheet.Name <> "k_Test" Then
    'Daten sammeln in Area 
    For Each objButten In MySheet.Shapes
     If TypeName(objButten.OLEFormat.Object) = "Button" Then
      Redim Preserve Area(i)
      Area(i) = objButten.Name
      i = i + 1
     End If
    Next objButten
    'Butten dieser Tabelle löschen 
    If i > 0 Then
     MySheet.Shapes.Range(Application.Transpose(Area)).Delete
    End If
 End If
 
 i = 0: Erase Area
Next MySheet

End Sub


Gruß Tino

Anzeige
mit CommandButton
24.02.2009 22:36:52
Tino
Hallo,
hier noch für beide Button.
Sub LoescheButton()
Dim Area() As String
Dim i As Integer
Dim MySheet As Worksheet
Dim objButten As Shape
Dim sObjName As String
'Schleife über alle Tabellen 
For Each MySheet In ThisWorkbook.Worksheets
 'Tabelle k_Test auslassen 
 If MySheet.Name <> "k_Test" Then
    'Daten sammeln in Area 
    For Each objButten In MySheet.Shapes
        
        With objButten
          
          If .Type = 12 Then
           sObjName = .OLEFormat.progID
          Else
           sObjName = TypeName(.OLEFormat.Object)
          End If
          
          If sObjName = "Button" Or sObjName Like "*CommandButton*" Then
           Redim Preserve Area(i)
           Area(i) = .Name
           i = i + 1
          End If
        
        End With
    
    Next objButten
    'Butten dieser Tabelle löschen 
    
    If i > 0 Then
     MySheet.Shapes.Range(Application.Transpose(Area)).Delete
    End If
 End If
 
 i = 0: Erase Area
Next MySheet

End Sub


Gruß Tino

Anzeige
Danke an ALLE -)
25.02.2009 09:22:50
Kurt
Guten Morgen Zusammen,
danke an Sepp, Daniel, Renee und Tino.
Das ist eine Superunterstützung !
mfg Kurt aus K
;
Anzeige
Anzeige

Infobox / Tutorial

Alle Schaltflächen in Excel-Tabellen löschen


Schritt-für-Schritt-Anleitung

Um alle Schaltflächen in Excel zu löschen, außer in der Tabelle „k_Test“, kannst Du folgendes VBA-Makro verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Klicke im Menü auf „Einfügen“ und wähle „Modul“, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Sub SchalterWeg()
    Dim objWs As Worksheet
    Dim objShp As Shape

    For Each objWs In ThisWorkbook.Worksheets
        If objWs.Name <> "k_Test" Then
            For Each objShp In objWs.Shapes
                If objShp.Type = 8 Or objShp.OLEFormat.Object.progID = "Forms.CommandButton.1" Then
                    objShp.Delete
                End If
            Next
        End If
    Next
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Drücke ALT + F8, wähle das Makro SchalterWeg aus und klicke auf „Ausführen“.

Das Makro entfernt alle Schaltflächen, die sich in den Tabellen befinden, außer in „k_Test“.


Häufige Fehler und Lösungen

Problem: Das Makro löscht nicht alle Schaltflächen.
Lösung: Stelle sicher, dass Du sowohl Formular-Buttons als auch ActiveX-Steuerelemente überprüfst. Im obigen Code ist dies bereits berücksichtigt.

Problem: Es wird eine Fehlermeldung angezeigt.
Lösung: Überprüfe, ob das Makro korrekt in ein Modul eingefügt wurde und dass das Excel-Dokument nicht im geschützten Modus geöffnet ist.


Alternative Methoden

  1. Manuelles Löschen: Du kannst die Schaltflächen auch manuell löschen. Wähle das Auswahl-Tool im Zeichnungsbereich und ziehe einen Rahmen um die Schaltflächen, die Du löschen möchtest. Drücke anschließend die Entf-Taste.

  2. Bearbeiten-Funktion: Wenn Du keine anderen Objekte auf dem Arbeitsblatt hast, kannst Du die Funktion „Bearbeiten -> Gehe zu -> Inhalte -> Objekte“ verwenden, um alle Objekte auszuwählen und zu löschen.


Praktische Beispiele

Hier ist ein Beispiel für ein erweitertes Makro, das alle Schaltflächen inklusive CommandButtons löscht:

Sub LoescheButton()
    Dim Area() As String
    Dim i As Integer
    Dim MySheet As Worksheet
    Dim objButten As Shape

    For Each MySheet In ThisWorkbook.Worksheets
        If MySheet.Name <> "k_Test" Then
            For Each objButten In MySheet.Shapes
                If TypeName(objButten.OLEFormat.Object) = "Button" Or _
                   objButten.Type = 12 Then
                    ReDim Preserve Area(i)
                    Area(i) = objButten.Name
                    i = i + 1
                End If
            Next objButten
            If i > 0 Then
                MySheet.Shapes.Range(Application.Transpose(Area)).Delete
            End If
        End If
        i = 0: Erase Area
    Next MySheet
End Sub

Tipps für Profis

  • Verwende Debug.Print, um den Typ und Namen der Objekte im Direktfenster anzuzeigen. Dies hilft, Probleme mit dem Code zu identifizieren.
  • Experimentiere mit den Typnummern der Objekte, um gezielt bestimmte Schaltflächen zu löschen.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Formular-Buttons und CommandButtons?
Formular-Buttons sind einfache Schaltflächen, die über die Entwicklertools hinzugefügt werden, während CommandButtons ActiveX-Steuerelemente sind, die mehr Funktionen bieten.

2. Kann ich das Makro anpassen, um bestimmte Schaltflächen zu behalten?
Ja, Du kannst die Bedingungen im Code anpassen, um spezifische Schaltflächen nach Namen oder Typ zu behalten.

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