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

Forumthread: Button per VBA auswählen

Button per VBA auswählen
12.07.2021 08:38:08
Hans
Hallo,
wie kann ich alle Button (14 Stück) die innerhalb das Zellenbereich BJ1:BJ72 auswählen?
Ich hab jetzt folgenden Code:
ActiveSheet.Shapes.Range(Array("Button 18", "Button 19", "Button 79")).Select
leider funktioniert dieser nur im ersten Tabellenblatt, in den nachfolgenden Tabellenblättern haben die Buttons einen anderen Namen (z.B. "Button 1" oder "Button 2")
deshalb müsste ich diese über den Zellenbereich auswählen.
Gruß Hans
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Button per VBA auswählen
12.07.2021 08:43:43
MCO
Moin, Hans!
Kannst du nicht die buttons einzeln durchgehen mit einer Schleife?
For each button in Range(xy).shapes... usw?
next button
Nur so als Idee.
Damit wärst du völlig von Benennung frei....
Gruß, MCO
AW: Button per VBA auswählen
12.07.2021 08:50:20
Hans
Hallo MCO,
kann ich da den Zellenbereich BJ1:BJ72 angeben? ich hab nämlich noch mehrer Button im Tabellenblatt die nicht ausgewählt werden sollen.
Anzeige
AW: Button per VBA auswählen
12.07.2021 09:13:59
Daniel
Hi.
Du kannst nur die Schleife über dir Objekte des Blattes machen
Du kannst aber Abfragen, wo sich der. Button befindet

For each button in activesheet.shapes
If not intersect(Range("BJ1:BJ72"), button.Topleftcell) is nothing then
Gruß Daniel
Anzeige
AW: Button per VBA auswählen
12.07.2021 08:59:46
Oberschlumpf
Hi Hans,
um das Ganze für dich vielleicht etwas abzukürzen und nicht in einem Frage/Antwort-PingPong zu landen, würde ich dir, als VBA-Neuling, vorschlagen, per Upload eine Bsp-Datei mit mehreren Tabellenblättern/mehreren Button pro Tabellenblatt zur Verfügung zu stellen.
Und dann erklärst du, anhand der Bsp-Datei von dir, noch mal genau, welche Button sollen ausgewählt werden und welche nicht.
Ciao
Thorsten
Anzeige
AW: Button per VBA auswählen
12.07.2021 09:28:24
Hans
Hallo Thorsten,
anbei die beispiel Datei
https://www.herber.de/bbs/user/147066.xls
wie gesagt, alle Button im Zellenbereich BJ1:BJ72 sollen ausgewählt werden.
Gruß Hans
AW: Button per VBA auswählen
12.07.2021 10:17:49
Nepumuk
Hallo Hans,
teste mal:

Public Sub SelectButtons()
Dim objShape As Shape
Dim astrButtonArray() As String
Dim ialngIndex As Long
For Each objShape In ActiveSheet.Shapes
If Not Intersect(objShape.TopLeftCell, Range("BI1:BM72")) Is Nothing Then
ReDim Preserve astrButtonArray(ialngIndex)
astrButtonArray(ialngIndex) = objShape.Name
ialngIndex = ialngIndex + 1
End If
Next
If ialngIndex > 0 Then _
ActiveSheet.Shapes.Range(astrButtonArray).Select
End Sub
Gruß
Nepumuk
Anzeige
AW: Button per VBA auswählen
12.07.2021 11:50:27
Hans
Danke Nepumuk,
funktioniert!!!
Gruß
;
Anzeige
Anzeige

Infobox / Tutorial

Button-Auswahl per VBA in Excel


Schritt-für-Schritt-Anleitung

Um alle Buttons in einem bestimmten Bereich, wie zum Beispiel BJ1:BJ72, auszuwählen, kannst du den folgenden VBA-Code verwenden. Dieser Code durchläuft alle Shapes auf dem aktiven Blatt und wählt nur die Buttons aus, die sich im definierten Bereich befinden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" > Einfügen > Modul.

  3. Kopiere und füge den folgenden Code in das Modul ein:

    Public Sub SelectButtons()
       Dim objShape As Shape
       Dim astrButtonArray() As String
       Dim ialngIndex As Long
    
       For Each objShape In ActiveSheet.Shapes
           If Not Intersect(objShape.TopLeftCell, Range("BJ1:BJ72")) Is Nothing Then
               ReDim Preserve astrButtonArray(ialngIndex)
               astrButtonArray(ialngIndex) = objShape.Name
               ialngIndex = ialngIndex + 1
           End If
       Next
    
       If ialngIndex > 0 Then _
           ActiveSheet.Shapes.Range(astrButtonArray).Select
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um alle Buttons im gewünschten Bereich auszuwählen.


Häufige Fehler und Lösungen

  • Button wird nicht ausgewählt: Stelle sicher, dass der Button tatsächlich im Bereich BJ1:BJ72 liegt. Überprüfe die Position und den Namen der Buttons.
  • Fehlermeldung beim Ausführen des Codes: Achte darauf, dass die VBA-Referenzen korrekt gesetzt sind und dass die Arbeitsmappe nicht schreibgeschützt ist.
  • Buttons sind nicht sichtbar: Überprüfe, ob die Buttons eventuell hinter anderen Objekten liegen oder ob sie ausgeblendet sind.

Alternative Methoden

Eine alternative Methode wäre, die Buttons über ihre Namen auszuwählen, was jedoch weniger flexibel ist, da die Namen je nach Tabellenblatt variieren können. Du kannst auch eine Schleife verwenden, um alle Shapes zu durchlaufen und gezielt die Buttons auszuwählen:

For Each button In ActiveSheet.Shapes
    If button.Type = msoFormControl Then
        ' Hier kannst du weitere Bedingungen hinzufügen
    End If
Next button

Diese Methode gibt dir mehr Kontrolle, ist jedoch aufwändiger.


Praktische Beispiele

Wenn du mehrere Tabellenblätter hast und sicherstellen möchtest, dass die Buttons auf jedem Blatt korrekt ausgewählt werden, kannst du den Code anpassen, um durch alle Tabellenblätter zu iterieren:

Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
    ws.Activate
    ' Code zum Auswählen der Buttons hier einfügen
Next ws

Dies ermöglicht dir, die Buttons vba auf jedem Blatt zu verwalten.


Tipps für Profis

  • Verwende Strg + G im VBA-Editor, um die Immediate Window zu öffnen. Hier kannst du Variablen und Objekte testen.
  • Dokumentiere deinen Code gut, damit andere (oder du selbst später) verstehen, was jeder Abschnitt macht.
  • Nutze die Debug.Print-Anweisung, um den Status von Variablen während der Ausführung zu überprüfen, was bei der Fehlersuche hilfreich sein kann.

FAQ: Häufige Fragen

1. Wie kann ich alle Buttons auf einem Blatt auswählen?
Du kannst den oben genannten Code verwenden, um alle Buttons im definierten Bereich auszuwählen. Wenn du alle Buttons ohne einen Bereich auswählen möchtest, entferne die Intersect-Bedingung.

2. Was ist der Unterschied zwischen einem Shape und einem Button in VBA?
Ein Shape ist ein allgemeiner Begriff für alle grafischen Objekte in Excel, während ein Button (oder Schaltfläche) eine spezifische Art von Shape ist, die für die Benutzerinteraktion gedacht ist.

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