Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1724to1728
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige