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

Forumthread: Wenn Button vorhanden, dann

Wenn Button vorhanden, dann
20.06.2008 12:17:46
Walter
Hallo Zusammen,
ich möchte gern prüfen, wenn ein Button in einer Tabelle schon vorhanden ist,
msgbox "Button schon da " erscheinen.
mfg Walter mb

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn Button vorhanden, dann
20.06.2008 12:57:00
Chris
servus Walter,
z.B. so für Buttons aus der Steuerelement Toolbox:

Sub Button()
On Error Resume Next
Sheets("Cache").OLEObjects ("CommandButton1") ' Sheetname anpassen
If Err.Number  0 Then
MsgBox "CommandButton1 nicht da !", vbCritical
Else
MsgBox "CommandButton1 da !", vbInformation
End If
On Error GoTo 0
End Sub


In diesem Fall für den ComandButton1.
Gruß
Chris

Anzeige
AW: Wenn Button vorhanden, dann
20.06.2008 13:08:17
Walter
Hallo Chris,
habe so eingesetzt, obwohl ein Button vorhanden ist kommt
Meldung:
MsgBox "CommandButton1 nicht da !", vbCritical

Sub Button()
On Error Resume Next
Sheets("Test").OLEObjects ("Button")             ' Sheetname anpassen
If Err.Number  0 Then
MsgBox "CommandButton1 nicht da !", vbCritical
Else
MsgBox "CommandButton1 da !", vbInformation
End If
On Error GoTo 0
End Sub


mfg walter mb

Anzeige
AW: Wenn Button vorhanden, dann
20.06.2008 13:25:00
Beverly
Hi Walter,

Sub Button()
Dim ooElement As OLEObject
For Each ooElement In ActiveSheet.OLEObjects
If ooElement.Name = "Button" Then
MsgBox "Button ist da"
Exit For
End If
Next ooElement
End Sub




Anzeige
Wieso bei mir nicht ?
20.06.2008 13:54:42
Walter
Hallo Karin,
bei klappt es nicht !
Liegt es daran das ich Schaltflächen habe ?
mfg walter mb

AW: Wieso bei mir nicht ?
20.06.2008 14:15:00
Beverly
Hi Walter,
wenn es ein Element aus der Formular-Symbolleiste ist, dann so

Sub auslesen_alle_elemente()
Dim shShape As Shape
For Each shShape In Worksheets("Tabelle1").Shapes
If shShape.Name = "Button" Then
MsgBox "Button ist da"
Exit For
End If
Next shShape
End Sub




Anzeige
Ich verzweifel
20.06.2008 14:35:00
Walter
Hallo Karin, bitte nicht BÖSSSSSe sein,
aber es funkt. nicht.

Sub Button_auslesen_alle_elemente()
Dim shShape As Shape
For Each shShape In Worksheets("Test").Shapes
If shShape.Name = "Button" Then
MsgBox "Button ist da"
Exit For
End If
Next shShape
MsgBox "Button fehlt"
End Sub


Der Tabellenname ist "Test" hab auch mal "Schaltfläche" eingesetzt, bei mir kommt
immer : MsgBox "Button fehlt"
Es ist aus der Formular-Symbolleiste .
Wo kann den da ein Fehler sein.
mfg walter mb

Anzeige
AW: Ich verzweifel
20.06.2008 14:50:01
Reinhard
Hi Walter,
was erscheint denn so alles oder halt nicht wenn du dies mal laufen läßt:

Sub Button_auslesen_alle_elemente()
Dim shShape As Shape
For Each shShape In Worksheets("Test").Shapes
msgbox shShape.Name
Next shShape
End Sub


Gruß
Reinhard

Anzeige
AW: Ich verzweifel
20.06.2008 15:05:00
Walter
Hallo Reinhard,
so werden die Command Button und Schaltflächen per MSGBOX angezeigt !
mfg walter mb

AW: Ich verzweifel
20.06.2008 16:44:08
Beverly
Hi Walter,
und wie heißt die Schaltfläche denn nun richtig, d.h. was wird dir als MasBox angezeigt? Diesen Namen musst du in den anderen Code einsetzen, denn wenn der Code bei dir immer den Button nicht findet, dann heißt er nicht so, wie du ihn geschrieben hast.


Anzeige
Hallo Karin
20.06.2008 20:28:00
Walter
Hallo Karin,
ich habe mehrer Button drauf, die werden alle angezeigt also
also Button 14, Button 2 u.s.w.

Sub Button_auslesen_alle_elemente()
Dim shShape As Shape
For Each shShape In Worksheets("Test").Shapes
MsgBox shShape.Name
Next shShape
End Sub


jetzt brauch ich nur die Info:
MsgBox "Button ist da"
MsgBox "Button fehlt"
mfg walter mb

Anzeige
Ich habe die Lösung ?
20.06.2008 20:56:00
Walter
Hallo Karin,
mit diesem Makro habe ich das was ich wollte:

Sub Button2_auslesen_alle_elemente()
Dim shShape As Shape
For Each shShape In Worksheets("Test").Shapes
If shShape.Name = "Button"  1 Then
MsgBox "Button ist da"
Exit Sub
Exit For
End If
Next shShape
MsgBox "Button fehlt"
'hier mein Makro rein ...
End Sub


mfg walter mb

Anzeige
AW: Ich habe die Lösung ?
21.06.2008 01:29:00
Reinhard
Hi Walter,
"mit diesem Makro habe ich das was ich wollte:"
leider nicht, du hast da einen maroden Vba-Code der garantiert nicht das macht was möchtest, was immer das auch immer ist *seufz*
Schau mal in der Vba-Hilfe nach was exit sub so macht, das nachfolgende exit for wird nie ausgeführt.
Soofern du auch nur ein "Shape" in deinem Blatt hast wird
If shShape.Name = "Button" 1 Then
immer ausgeführt!
D.h. wenn du ein Shape, einen button im Blatt hast, der "Button 1" heißt liefert dein Code nur die Information daß du einen Button hast, ob der "Button 1" heißt sagt dir dein Code absolut nicht.
Um zu wissen ob ein Button mit dem namen "Button 13" existiert ist ein Weg:
If shShape.Name = "Button 13" Then
If shShape.Name = "Button" 1 Then
ist in der Hinsicht Blödsinn. Sorry.
Ich könnte dir jetzt den Hinweis auf "Like" geben, aber fühl mich ehrlich gesagt unwohl weil das das ganze noch verschlimmern könnte.
Vielleicht wäre es für Alle am sinnvollsten du sagst was du da für Buttons hast, woher sie stammen, Formular oder Steuerlement und wofür du die Existensüberprüfung brauchst.
Gruß
Reinhard

Anzeige
Guten Morgen
21.06.2008 09:35:00
Walter
Guten Morgen Reinhard,
herzlichen Dank für die ausfühliche Information.
Ich kopiere ein Button (aus Formularauswahl) in eine Tabelle, ich möchte nur prüfen,
ob das Button vorhanden ist, dann kann ich die Spalten formatieren.
Ich habe bei mir getestet, wenn das Button da war, war OK mit der Meldung,
habe das Button gelöscht und die Meldung "Button fehlt" wurde angezeigt.
Kannst Du den das Makro von Karin, dahin RICHTIG, abändern ?
mfg walter mb

Anzeige
geht einwandfrei. owT
20.06.2008 13:32:06
Rudi
;
Anzeige
Anzeige

Infobox / Tutorial

Überprüfen, ob ein Button in Excel vorhanden ist


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der du den Status eines Buttons überprüfen möchtest.

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

  3. Füge ein neues Modul hinzu:

    • Klicke mit der rechten Maustaste auf "VBAProject (DeinWorkbookName)".
    • Wähle "Einfügen" und dann "Modul".
  4. Kopiere den folgenden Code in das Modul:

    Sub ButtonPrüfen()
       Dim ooElement As OLEObject
       For Each ooElement In ActiveSheet.OLEObjects
           If ooElement.Name = "CommandButton1" Then
               MsgBox "Button ist da"
               Exit Sub
           End If
       Next ooElement
       MsgBox "Button fehlt"
    End Sub
  5. Ändere den Button-Namen in der If-Bedingung, falls dein Button anders heißt.

  6. Führe das Makro aus:

    • Gehe zurück zu Excel, drücke ALT + F8, wähle "ButtonPrüfen" und klicke auf "Ausführen".

Häufige Fehler und Lösungen

  • Fehler: "Button nicht da" wird angezeigt:

    • Stelle sicher, dass der Button tatsächlich auf dem aktiven Blatt vorhanden ist und dass der Name korrekt eingegeben wurde. Überprüfe auch, ob es sich um einen ActiveX-Button oder einen Formular-Button handelt.
  • Lösung für Schaltflächen aus der Formular-Symbolleiste: Wenn du einen Button aus der Formular-Symbolleiste verwendest, verwende den folgenden Code:

    Sub FormularButtonPrüfen()
       Dim shShape As Shape
       For Each shShape In ActiveSheet.Shapes
           If shShape.Name = "Button" Then
               MsgBox "Button ist da"
               Exit Sub
           End If
       Next shShape
       MsgBox "Button fehlt"
    End Sub

Alternative Methoden

  • Verwendung der For Each-Schleife: Um alle Schaltflächen auf einem Blatt zu überprüfen, kannst du den For Each-Befehl nutzen, um durch alle OLE-Objekte oder Shapes zu iterieren, je nachdem, ob es sich um ActiveX- oder Formular-Schaltflächen handelt.

  • Verwendung von On Error Resume Next: Dieser Befehl kann helfen, Fehler zu ignorieren, wenn der Button nicht gefunden wird. Verwende diesen Ansatz mit Bedacht, da er auch andere Fehler übersehen könnte.


Praktische Beispiele

  1. Überprüfen eines spezifischen Buttons:

    Sub CheckSpecificButton()
       Dim btn As OLEObject
       On Error Resume Next
       Set btn = ActiveSheet.OLEObjects("CommandButton1")
       If btn Is Nothing Then
           MsgBox "Button nicht vorhanden."
       Else
           MsgBox "Button vorhanden."
       End If
       On Error GoTo 0
    End Sub
  2. Schleife durch alle Shapes:

    Sub CheckAllShapes()
       Dim sh As Shape
       For Each sh In ActiveSheet.Shapes
           If sh.Name Like "Button*" Then
               MsgBox sh.Name & " ist vorhanden."
           End If
       Next sh
    End Sub

Tipps für Profis

  • Benutze Like für flexible Namensabgleichung: Wenn du mehrere Buttons hast, deren Namen ähnlich sind (z.B. „Button1“, „Button2“), kannst du Like "Button*" verwenden, um alle übereinstimmenden Buttons zu finden.

  • Fehlerbehandlung einfügen: Verwende On Error-Anweisungen, um unerwartete Fehler während der Ausführung zu handhaben.

  • Dokumentiere deine Makros: Füge Kommentare zu deinem Code hinzu, um die Funktionsweise zu erklären und zukünftige Änderungen zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich bestätigen, dass ein Button in einer bestimmten Tabelle vorhanden ist? Um dies zu tun, musst du den Namen des Arbeitsblatts im Code angeben, z.B. Sheets("Tabelle1").OLEObjects.

2. Was ist der Unterschied zwischen ActiveX-Buttons und Formular-Buttons? ActiveX-Buttons sind flexibler und bieten mehr Funktionen, während Formular-Buttons einfacher zu bedienen sind und weniger Ressourcen benötigen. Stelle sicher, dass du den richtigen Code für den jeweiligen Button-Typ verwendest.

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