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

Shapes in Tabellenblatt zählen

Forumthread: Shapes in Tabellenblatt zählen

Shapes in Tabellenblatt zählen
03.12.2019 09:34:11
Marco
Guten Morgen liebes Forum,
ich wende mich an Euch, da ich selbst sehr wenig Kenntnisse in VBA habe.
Zwar habe ich hier in der Suche ähnliches gefunden, kann jedoch die Fragmente nicht zusammensetzen - daher meine Bitte um Hilfe an Euch:
In Excel habe ich eine Übersicht erstellt, um Tätigkeiten, die als Shape (Rechteck) in einer bestimmten Spalte platziert werden, pro Mitarbeiter zu visualisieren.
Es kommen regelmäßig Tätigkeiten (also Shapes) hinzu, werden verschoben oder ganz weggenommen
Über ein VBA Script möchte ich realisieren, dass
a) die Shapes pro Spalte gezählt und die Summe in einer Zelle ausgegeben werden.
b) wenn ein Shape (also eine Tätigkeit) verschoben wird, dass neu gezählt wird und die Ausgabe in den betroffenen Zellen aktualisiert wird.
Ich freue mich über Eure Hilfe, herzlichen Dank.
Viele Grüße
Marco
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Shapes in Tabellenblatt zählen
03.12.2019 10:15:49
JoWE
Hallo,
Die Anzahl der Shapes im Arbeitsblatt ermittelst Du mit dem VBA-Befehl:

activesheet.shapes.count
Ansonsten kannst Du die Position eines Shape nicht an der Spalte oder der Zeile festmachen, weil Shapes "über der Tabelle schweben". Laut Objektkatalog für das Shape-Objekt, kann die TopLeftCell-Eigenschaft ermittelt werden. Diese gibt ein Range-Objekt zurück, welches eine Top- bzw. Left-Eigenschaft hat. Damit kann die Position in einer Tabelle bestimmt werden. Da aber eine Zelle immer größer ist als die Punktförmige linke obere Ecke eines Shapes, ist die Angabe eher vage. Das geht z.B. so:
Sub pos_Links_und_Hoch()
Dim links As Integer, hoch As Integer
links = ActiveSheet.Shapes(1).Left
hoch = ActiveSheet.Shapes(1).Top
MsgBox "L:" & links & ", H: " & hoch
End Sub
Gruß
Jochen
Anzeige
AW: Shapes in Tabellenblatt zählen
03.12.2019 10:19:49
Beverly
Hi Marco,
nach diesem Prinzip:
Sub ShapesZaehlen()
Dim shaShape As Shape
Dim lngShapeA As Long
Dim lngShapeB As Long
Dim lngShapeC As Long
For Each shaShape In ActiveSheet.Shapes
If Not Intersect(shaShape.TopLeftCell, Columns(1)) Is Nothing Then
lngShapeA = lngShapeA + 1
ElseIf Not Intersect(shaShape.TopLeftCell, Columns(2)) Is Nothing Then
lngShapeB = lngShapeB + 1
ElseIf Not Intersect(shaShape.TopLeftCell, Columns(3)) Is Nothing Then
lngShapeC = lngShapeC + 1
End If
Next shaShape
Range("A10") = lngShapeA
Range("B10") = lngShapeB
Range("C10") = lngShapeC
End Sub

Anzahl der Variablen und Nummer der Spalten musst du anpassen sowie die Ausgabezellen.
Das Makro musst du jedesmal erneut ausführen sobale die Position von Shapes geändert wurde.


Anzeige
AW: Shapes in Tabellenblatt zählen
03.12.2019 10:31:29
JoWE
Hallo Beverly,
danke! Wieder was neues gelernt.
Gruß
Jochen
AW: Shapes in Tabellenblatt zählen
03.12.2019 11:48:55
Marco
Hallo Beverly, hallo Jochen,
ganz herzlichen Dank für das super schnelle Feedback und die Lösungen.
Den Code von Beverly habe ich umgesetzt und er funktioniert genauso wie ich es mir gewünscht habe.
Lieben Dank und vorweihnachtliche Grüße
Marco
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Shapes in Tabellenblatt zählen


Schritt-für-Schritt-Anleitung

Um die Anzahl der Shapes in einem Excel-Arbeitsblatt zu zählen, kannst Du das folgende VBA-Skript verwenden. Dieser Code zählt die Shapes in den Spalten A, B und C und gibt die Ergebnisse in den Zellen A10, B10 und C10 aus.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen und wähle dann Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code ein:
Sub ShapesZaehlen()
    Dim shaShape As Shape
    Dim lngShapeA As Long
    Dim lngShapeB As Long
    Dim lngShapeC As Long

    For Each shaShape In ActiveSheet.Shapes
        If Not Intersect(shaShape.TopLeftCell, Columns(1)) Is Nothing Then
            lngShapeA = lngShapeA + 1
        ElseIf Not Intersect(shaShape.TopLeftCell, Columns(2)) Is Nothing Then
            lngShapeB = lngShapeB + 1
        ElseIf Not Intersect(shaShape.TopLeftCell, Columns(3)) Is Nothing Then
            lngShapeC = lngShapeC + 1
        End If
    Next shaShape

    Range("A10") = lngShapeA
    Range("B10") = lngShapeB
    Range("C10") = lngShapeC
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, indem Du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

Jedes Mal, wenn Du die Position der Shapes änderst, musst Du dieses Makro erneut ausführen.


Häufige Fehler und Lösungen

  • Fehler: Makro funktioniert nicht
    Stelle sicher, dass Du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Makroeinstellungen und aktiviere die Makros.

  • Fehler: Shapes werden nicht gezählt
    Überprüfe, ob die Shapes tatsächlich in den angegebenen Spalten platziert sind. Shapes "schweben" über den Zellen, daher kann die Position manchmal ungenau sein.


Alternative Methoden

Du kannst auch die Anzahl der Shapes im gesamten Arbeitsblatt mit dem folgenden Befehl zählen:

MsgBox "Anzahl der Shapes: " & ActiveSheet.Shapes.Count

Dieser Befehl zeigt die Gesamtanzahl der Shapes in einem MessageBox-Fenster an.


Praktische Beispiele

Angenommen, Du hast mehrere Shapes in den Spalten A, B und C platziert. Wenn Du das oben genannte Makro ausführst, erhältst Du die Anzahl der Shapes in jeder dieser Spalten in den Zellen A10, B10 und C10. Du kannst die Ausgabezellen nach Belieben anpassen.


Tipps für Profis

  • Verwende die activesheet.shapes.count-Funktion, um schnell die Gesamtzahl aller Shapes zu überprüfen, ohne sie nach Spalten zu sortieren.
  • Du kannst das Makro so anpassen, dass es automatisch ausgeführt wird, wenn sich die Zellen ändern. Dafür kannst Du das Worksheet_Change-Ereignis verwenden, um das Zählen der Shapes bei Änderungen zu automatisieren.

FAQ: Häufige Fragen

1. Wie kann ich die Zählung der Shapes automatisieren?
Du kannst das Makro so anpassen, dass es beim Ändern von Zellen automatisch ausgeführt wird, indem Du das Worksheet_Change-Ereignis verwendest.

2. Kann ich die Shapes in anderen Spalten zählen?
Ja, passe einfach die If-Bedingungen im VBA-Code an, um die gewünschten Spalten zu zählen und die Ausgabezellen entsprechend zu ändern.

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