Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
268to272
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
268to272
268to272
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

ChartObjects

ChartObjects
21.06.2003 21:36:11
Michael
Hallo VB-Spezialisten,

ich habe ein Macro, das mir eine Datenbeschriftung in ein Diagramm einfügt.
Das erste Diagramm wird mit ActiveSheet.ChartObjects(1). Active aufgerufen.
Ich habe mehrere Diagramme auf einem Tabellenblatt und möchte diese variabel aufrufen.
Über ActiveCell lege ich den Bereich fest in dem die Daten liegen. Wie kann ich nun eine Verbindung zwischen den markierten Daten und dem Diagramm herstellen - falls nicht möglich umgekehrt zw Diagramm und den zugehöhrigen Daten.

Danke für Eure Hilfe

Michael

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: ChartObjects
21.06.2003 23:03:10
L.Vira

Um einem Diagramm eine Datenquelle zuzuweisen, ist es nicht nötig, es zu aktivieren.

Option Explicit
Sub Datenquelle()
With ActiveSheet.ChartObjects(1).Chart
.SetSourceData Source:=Sheets("Tabelle1").Range("B3:E3")
End With
End Sub

Re: ChartObjects
21.06.2003 23:31:06
Michael

Hallo L.Vira,

vielen Dank für deine Antwort.
Da ich mehrere Diagramme in einem Arbeitsblatt habe bräuchte ich die Möglichkeit das ChartObject variabel aufzurufen.
With ActiveSheet.ChartObjects(1).Chart rufe ich doch nur das Diagramm 1 auf - oder?
wie kann ich statt (1) immer das ChartObjekt aufrufen dessen daten ich gerade markiert habe?

Danke

Michael

Anzeige
Re: ChartObjects
21.06.2003 23:41:06
L.Vira

Was willst du damit erreichen? Andersherum macht es einen Sinn.

Re: ChartObjects
22.06.2003 11:31:43
L.Vira

Wenn du, warum auch immer, von einer Zelle aus feststellen willst, welches Diagramm sich auf diese Zelle bezieht, musst du alle Diagramme abklappern, deren DataSource feststellen und prüfen, ob sich die aktive Zelle in dem Bereich befindet. Viel Spaß dabei. Es können sich auch 2 oder mehr Diagramme auf den gleichen Zellbereich oder eine Schnittmenge davon beziehen.

Re: ChartObjects
23.06.2003 13:05:11
Michael

Hallo L.Vira,

ich habe ein Macro (sh unten), das mir eine Datenbeschriftung in ein Diagramm einfügt. Das original Macro geht davon aus, dass nur 1 Diagramm in der Tabbele ist und die Daten bei A1 beginnen (Label x y). Im original Code wurde der Datenbereich mit Sheets(1).Range("A1").Select ausgewählt und das Diagramm über ActiveSheet.ChartObjects(1).Activate.

Da ich mehrere Diagramme und Datenbereiche auf einem Tabellenblatt habe versuche ich die absolute adressierung A1 und ChartObjects(1) in eine variable Adressierung umzuwandeln.

Deshalb brauche ich einen Verweis Daten auf Diagramm oder Diagramm auf Daten.
Starten wollte ich indem ich die oberste linke ecke des Datenbereichs aktiviere.

Zur Zeit starte ich im Code mit der Definition des Datenbereichs und müßte nun das zugehörige Diagramm definieren. Da dies, wie du schreibst, ggf aufwendig und mehrdeutig sein kann ist wahrscheinlich der andere Weg sinnvoller - also ich markiere das Diagramm und der zugehörige Datenbereich muß gefunden und activiert werden.

hier der Code:
'modifizierter Code
'variabel: beliebige Tabelle u Diagramm
'1. Datenbeschriftung erzeugen (falls nicht vorhanden)
'2. ändern in Labels


Sub Beschriftung()

'Startbereich u Bereichsdefinition
startzeile = ActiveCell.Row
startspalte = ActiveCell.Column
letztezeile = Cells(ActiveCell.Row, ActiveCell.Column).End(xlDown).Row


'Datenbeschriftung erzeugen
ActiveSheet.ChartObjects(1).Activate
ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowValue, LegendKey:=False

'Datenbeschriftung ändern
Dim i As Integer
Dim z As Integer
Dim Label() As String

'variable Lage der Daten/Diagramme - linke obere Ecke ist Überschrift der Labels (L x y)
'orig.Code: Sheets(1).Range("A1").Select
'orig.Code: ActiveSheet.Range(Cells(ActiveCell.Row, ActiveCell.Column)).Select
ActiveSheet.Cells(startzeile, startspalte).Select
'orig.Code: z = Range("A1").CurrentRegion.Rows.Count
z = letztezeile - startzeile + 1
ReDim Label(z - 1)
For i = 2 To z
Label(i - 1) = Cells(i, 1).Value
Next i

ActiveChart.SeriesCollection(1).Formula = _
"=SERIES(" & Sheets(1).Name & "!R1C1," & Sheets(1).Name & _
"!R2C2:R" & z & "C2," & Sheets(1).Name & "!R2C3:R" & z & "C3,1)"
For i = 1 To z - 1
ActiveChart.SeriesCollection(1).Points(i).DataLabel.Select
Selection.Characters.Text = Label(i)
Next i
'orig.Code: Range("A1").Select
ActiveSheet.Cells(startzeile, startspalte).Select
End Sub


Danke
Michael

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige