Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Namen der Shapes auflisten
#1
Hallo Community,
ich bitte bei zwei Anliegen um eure Unterstützung. 

Zum einen habe ich probiert, mir ein kleines Makro zu schreiben, welches mir eine Liste aller Shapes mit dem Namen "Haus" erstellt. Das klappt auch soweit, allerdings enthält die Liste Leerzeilen für die Shapes, welche nicht "Haus" im Namen haben. Hier komme ich mit meinem Anfängerwissen gerade nicht weiter.

Die Liste soll ab der Zelle H2 im Arbeitsblatt "Grundriss" erstellt und durch den Button "Liste Häuser" gestartet werden.

Code:
Sub ListeShapes()
Dim iCount As Integer
Range("H2:j5000").Clear
For iCount = 1 To ActiveSheet.Shapes.Count
    If Left(ActiveSheet.Shapes(iCount).Name, 4) = "Haus" Then
    Cells(iCount + 1, 8).Value = ActiveSheet.Shapes(iCount).Name
    Else
    iCount = iCount + 1
    End If
Next iCount
End Sub

Zum anderen bin ich dabei mich in die VBA -Programmierung einzulesen bzw. mir diese anzueignen. Dazu habe ich mir eine kleine Aufgabe gestellt, welche ich Schritt für Schritt abarbeiten möchte. Das zuvor beschriebene Problem ist eine kleine Teilaufgabe.
Würdet ihr mir empfehlen, mir hierzu Fachliteratur zu besorgen, wenn ja welche würdet ihr empfehlen oder reicht das große weite Netz hierfür aus?

Danke und viele Grüße


Angehängte Dateien
.xlsm   Phasenplan_Test.xlsm (Größe: 29,56 KB / Downloads: 0)
Antworten Top
#2
Hallo,

lass das iCount = iCount + 1 weg, denn iCount zählt ja schon durch die Schleife hoch. Außerdem werden Shapes dadurch übersprungen.

Gruß Uwe
Antworten Top
#3
Danke für deine Hilfe. Ich habe deinen Hinweis berücksichtigt. Er löst allerdings nicht mein Problem, dass die Liste weiterhin Leerzeilen enthält für die Shapes, welche nicht "Haus" im Namen haben.
Antworten Top
#4
Hallo L...,

nimm für die Schleife und für die Einträge verschiedene Zähler

Code:
Code:
Sub ListeShapes()
Dim iCount As Integer
Dim jCount As Integer
Range("H2:j5000").Clear
jCount = 1
For iCount = 1 To ActiveSheet.Shapes.Count
    If Left(ActiveSheet.Shapes(iCount).Name, 4) = "Haus" Then
        jCount = jCount + 1
        Cells(jCount, 8).Value = ActiveSheet.Shapes(iCount).Name
    End If
Next iCount
End Sub
nach dem Netz ist in Listen eine "For each"-Schleife schneller als eine Zählschleife:

Code:
Sub ListeShapes()
Dim shp As Shape
Dim jCount As Integer
Range("H2:j5000").Clear
jCount = 1
For Each shp in ActiveSheet.Shapes
    If Left(shp.Name, 4) = "Haus" Then
        jCount = jCount + 1
        Cells(jCount, 8).Value = shp.Name
    End If
Next shp
End Sub
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Antworten Top
#5
Vielen Dank für eure Hilfe. So funktioniert's.
Viele Grüße
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste