Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Makro: Markierung Diagramm





Frage

Hallo Leute... kann ich, wenn ich eine Zelle markiert habe, auf das diagramm das sozusagen "darüber" liegt (also auf der Zelle), das Diagramm markieren ? Das ist ein zwanzigseitiger Bericht der viele Diagramme umfasst und die Objectnamen der Diagramme ändern sich auch immer wieder. Deshalb dachte ich ich kann irgendwie über die Zelle erstmal dahin springen wo sich das diagramm befindet und dies dann irgendwie markieren...geht das ? Bis jetzt dachte ich es mir so: Sheets("Europe").Select Range("EH1").Select Hier sollte jetzt noch sowas wie "Alle Diagramme die auf der Zelle liegen markieren" ActiveChart.ChartArea.Select ...und dann ists klar ! End Sub Was meint ihr ?

Antwort 1 von Beverly

Hi,

wenn das Diagramm direkt in die linke obere Ecke der Zelle eingepasst ist, kannst du es einfach mit der Top- und der Left-Eigenschaft ansprechen. Andernfalls musst du einen Näherungswert verwenden.

Bis später,
Karin

Antwort 2 von HMu

Es ist schon ziemlich genau im oberen Eck aber genau kann ich es auch nicht sagen.
Wie gesagt: Bin ein blutiger Anfänger, versuche mich grad an meinen ersten Makros, deshalb kann ich mit TOp,Left...usw...noch nciht viel anfangen.
Gibts Beispiele dazu ?

wie lautet das Makro dann in einer beliebigen Spalte.
- mit Näherungswert
- mit Top,Left-Eigenschaft

Antwort 3 von HMu

ActiveSheet.DrawingObjects.Select

Es muss doch möglich sein obige Anweisung nur auf Spalten einzugrenzen und somit Diagramme auf beliebigen Seiten auswählen zu können oder ?

Antwort 4 von Beverly

Hi, (ist ein Beitrag mit Anrede und Gruß nicht viel freundlicher ;-)?)

schau mal auf meine HP, Seite "Diagramme m. VBA". Dort findest du das Beispiel Eigenschaften. Das erste dort enthaltene Makro sollte dir weiterhelfen. Es wird zwar ein Diagramm über das andere gelegt, dabei werden jedoch Top- und Left-Eigenschaft verwendet. Eine Zelle hat ebenfalls eine Top- und eine Left-Eigenschaft. Wenn also beide übereinstimmen, dann hast du das richtige Diagramm. Du müsstest also in einer Schleife alle Diagramme durchlaufen und prüfen, ob ihr Top/Left mit dem Top/Left der ausgewählten Zelle übereinstimmt.
Ich würde dir empfehlen, zuerst einmal mittels Code alle Diagramme mit Top/Left der jeweiligen Zelle in Übereinstimmung zu bringen, sodass das Auslesen einfacher ist.

Bis später,
Karin

Antwort 5 von HMu

Hey...

also wie gesagt, bin ganz neu bei dieser art der programmierung.
Kann mir das nicht wirklich ableiten aus deinem Bsp von deiner Page.
Brauche ein recht exaktes Bsp...dann würds evtl. gehn.

Gruß

Antwort 6 von Beverly

Hi,

versuche es mit folgendem Code

Sub diagramm_activieren()
    Dim shDiagramm As Shape
    Dim loDiagramm As Long
    Dim loTop As Long
    Dim loLeft As Long
    loTop = ActiveCell.Top
    loLeft = ActiveCell.Left
    For loDiagramm = 1 To ActiveSheet.Shapes.Count
        Set shDiagramm = Worksheets("Tabelle1").Shapes(loDiagramm)
        If shDiagramm.Type = msoChart Then
            If CInt(shDiagramm.Top) = loTop And CInt(shDiagramm.Left) = loLeft Then
                Worksheets("Tabelle1").ChartObjects(shDiagramm.Name).Activate
                Exit Sub
            End If
        End If
    Next loDiagramm
End Sub


Ich bin jetzt davon ausgegangen, dass das Diagramm nicht ganz 100%ig genau, aber ziemlich genau in der oberen linken Ecke der Zelle liegt. Das wird durch CInt abgefangen.

Bis später,
Karin

Antwort 7 von HMu

hey, vielen Dank schonmal für deine Mühen aber wenn ich das Makro ausführen will passiert nichts.Nicht mal ne Fehlermeldung.Einfach nichts !

Tabelle 1 hab ich abgeändert in meine richtige Sheet-Bezeichnung - Korrekt ???

In die richtige Zelle muss ich Excel auch noch springen lassen bevor das funkt...also ich hab das mal nach deinen Dim-Aktionen drangehängt - Korrekt ???
Sheets("Europe").Select
Range("EH1").Select

shDiagramm.Name ?? muss ich da auch was ändern ?
weil auf den Namen habe ich ja keinen Zugriff - es heißt Diagramm +Nr aber diese Nummern ändern sich in meinem Fall laufend.

Also was meinst du ?

Kann ich eigentlich irgendwie auf den Titel des Diagramms zugriefen lassen beim Aktivieren und davon z.B. nur die ersten 10 Zeichen ??? weil im titel würde sich immer nur der monat ändern...aber der Rest nicht.

Danke

Antwort 8 von Beverly

Hi,

dies ist ein Makro und keine automatisch Prozedur. Wenn es automatisch ablaufen soll, musst du den Auslöser in das Worksheet_SelectionChange Ereignis einbinden. Also in etwa auf diese Weise

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address <> "$EH$1" Then Exit Sub
    Application.ScreenUpdating = False
    diagramm_activieren
    Application.ScreenUpdating = True
End Sub


Den Diagrammnamen benötigst du nicht, denn Excel ermittelt diesen selbst. shDiagramm ist das Shape, welches gerade geprüft wird und shDiagramm.Name ist der Name des Shapes, also des Diagramms.


Bis später,
Karin

Antwort 9 von HMu

Hey,

nein ich starte das Makro schon manuell - makro ausführen !
Aber dann passiert nichts !
Bei einem kleineren Test kommt Laufzeitfehler 9
Diese Zeile zeigt er an :

Set shDiagramm = Worksheets("5").Shapes(loDiagramm)
5 heißt mein Sheet !

Was ist ein msoChart ??

Kann ich eigentlich irgendwie auf den Titel des Diagramms zugriefen lassen beim Aktivieren und davon z.B. nur die ersten 10 Zeichen ??? weil im titel würde sich immer nur der monat ändern...aber der Rest nicht.

Antwort 10 von Beverly

Hi,

es passiert dann nichts, wenn die linke obere Ecke des Diagramms zu weit von der linken oberen Ecke der Zelle entfernt ist.

msoChart ist der Typ des Shapes - ein in die Tabelle eingebettetes Diagrammobjekt.

Zum Namen habe ich dir bereits im vorherigen Beitrag geschrieben. Wenn du nur die ersten 10 Zeichen haben willst, musst du die Funktion Mid verwenden - Mid(shDiagramm.Name, 1, 10)

Weshalb bei dir dieser Fehler kommt, weiß ich nicht, da ich es ablehen, übers Internet in fremde Arbeitsmappen zu schauen ;-). Lade deine Arbeitsmappe doch einfach mal hoch, dann kann ich das besser nachvollziehen.

bis später,
Karin

Antwort 11 von HMu

Hey,

wie weit darf denn das Diagramm weg sein von der Ecke.
Also mit dem blosen Augen sieht man keinen Unterschied zw. Ecke und Diagramm-Ecke.

Bei dem Diagrammtitel gehts mir nicht darum die z.B. 10 ersten Stellen des Diagrammtitels zu bekommen, sondern mir gehts um so ne Art Abfrage durch den Diagrammtitel.

Ich lade jeden Monat neue Diagramme hoch die sich Excel automatisch holen soll, hoch. In diesem Diagrammtitel ändert sich der Monat immer mit, sonst bleibt sie gleich.
Ich wollte wissen vorhin ob ich diese Bedingung mit den ersten 10Zeichen nutzen kann um DAS Diagramm mit DEM spez. Titel zu aktvieren...es geht mir um ein Erkennungsmerkmal wenn ich schon die ObjectNr auch nicht nutzen kann.

Ein heikles Problem...
ob ich die Arbeitsmappe hochladen darf ist fraglich...
müsste darin zu viel verändern.Geht nicht !

Antwort 12 von Beverly

Hi,

wenn du sie nicht hochladen darfst, dann kannst du sie mir vielleicht per Mail zuschicken? Auf meiner HP findest du meine Adresse.

Bis später,
Karin

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: