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
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
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 ?
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
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ß
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
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
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
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
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
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.
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
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 !
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
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