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

Dynamischer Bereich Makro Diagramm

Dynamischer Bereich Makro Diagramm
10.01.2008 12:32:05
Hartwig
Hallo Leute, brauch mal eure Hilfe!
Ich habe folgendes Makro aufgezeichnet.

Private Sub Worksheet_Change(ByVal Target As Range)
' Diagramm Makro
Makro am 09.01.2008 aufgezeichnet
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A13"), PlotBy _
:=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End Sub


Meine Frage:
Wie kann ich nun den Bereich (im obigen Fall A1:A13) dynamisch machen.
Der Bereich kann sich nämlich jedesmal ändern z.B.A1:A17 ....
Das konnte ich aber bei der Aufzeichnung nicht berücksichtigen.
Hoffe ich habe mich richtig ausgedrückt.
Vielen Dank schon mal.
Hardi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 13:14:00
Holger
Hallo Hartwig,
wie willst du den Bereich festlegen, z.B.
durch Eingabe der linken oberen und rechten unteren Ecke:
b=Inputbox("linke obere : rechte untere Ecke eingeben")
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range(b), PlotBy :=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
oder z.B. durch Markieren des Bereichs:
Dim a As Range
Set a = Selection
b = a.Address
Charts.Add
ActiveChart.ChartType = xlLine
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range(b), PlotBy :=xlColumns
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle1"
Viel Erfolg
Holger

Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 13:14:51
Beverly
Hi Hardi,

ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A" & loVariable), PlotBy _
:=xlColumns




AW: Dynamischer Bereich Makro Diagramm
10.01.2008 13:37:31
Hartwig
Sorry! Hab aus Versehen nochmal einen Beitrag aufgemacht!!!
Hallo Holger, Hallo Beverly!
Zu deiner Lösung Holger: Ich möchte dass sich der Bereich automatisch alleine anpasst.
Die Werte die in die Zellen kopiert werden haben jedesmal eine andere Bereichsgrösse.
Zu deiner Lösung Beverly: Hier bekomme ich einen Laufzeitfehler 1004 gemeldet...
Danke für eure Hilfe!
Vielleicht könnt ihr nochmal....
Danke
Hartwig

Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 13:59:00
Beverly
Hi Hartwig,
natürlich muss loVariable irgendwie festgelegt werden. Da du aber das Worksheet_Change Ereignis verwendest, dann musst du Target.Row anstelle loVariable setzen. Bedenke aber, dass
1. mit deinem Code immer ein neues Diagramm auf dem bereits vorhandenen erstellt wird - du solltest also das vorhandenen vorher löschen
2. dein Code immer ausgelöst wird. Du musst ihn also nur auf Spalte A begrenzen.


AW: Dynamischer Bereich Makro Diagramm
10.01.2008 14:21:19
Hartwig
Danke Beverly,
aber ich habe Target.Row anstelle loVariable eingefügt also:
ActiveChart.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A" & Target.Row), PlotBy _
:=xlColumns
Aber dann funzt das auch nicht so richtig.
Auch mit der Begrenzung auf Spalte 1 weiss ich nicht wie ich das machen soll.
Ich kann nur Makros aufzeichnen....
das andere fällt mir schwer.
Könntest du mir meinen Code mal entsprechend abändern?
Oder ist das ganze doch schlecht machbar.
Nur nochmal zu meinem Ziel:
In die leere Spalte A werden jeden Tag neue Werte kopiert.
Danach soll automatisch ein Diagramm erstellt werden.
Die Bereichsgröße ist natürlich jedesmal anders.
Vielen Dank
Hartwig

Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 14:39:25
Beverly
Hi Hartwig,
natürlich mach ich das gern. So sollte es eigentlich funktionieren.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column  1 Then Exit Sub
If Target.Count > 1 Then Exit Sub
Application.DisplayAlerts = False
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects(1).Delete
Charts.Add
With ActiveChart
.ChartType = xlLine
.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A" & Target.Row), PlotBy _
:=xlColumns
.Location Where:=xlLocationAsObject, Name:="Tabelle1"
End With
Application.DisplayAlerts = True
End Sub


Es gibt natürlich auch eine Alternative ohne VBA, indem man den Datenbereich dynamisch gestaltet. Schau dazu mal auf meine HP, Seite "Diagramme". Dort findest du das Beispiel "Dynamisches Diagramm1".
Link zur Datei



Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 14:51:00
Hartwig
Hallo Beverly,
danke dir sehr.
Wenn ich die Werte per Hand eingebe klappt das wunderbar.
Nur wenn ich die Daten aus einer anderen Tabelle kopiere und in Spalte A einfüge
verändert sich der Bereich nicht mehr. Wenn da noch was geht...
Das mit dem dynamischen Diagramm ohne VBA werd ich mir mal auf deiner Page
anschauen. Dann könnte ich mir das wie gewohnt aufzeichnen. Vielleicht funktionierts dann.
Habe das mit einem dynamischen Bereich schon mal bei ner Pivot-Tabelle gemacht.
Vielen Dank nochmal
du hast mir nicht das erste mal geholfen...
Hartwig

Anzeige
AW: Dynamischer Bereich Makro Diagramm
10.01.2008 14:57:00
Hartwig
Hallo Beverly,
wenn ich die Werte einzel per Hand eintippe, klappt das.
Wenn ich aber die Werte aus einer anderen Tabelle und füge sie in Spalte A ein,
verändert sich der Bereich nicht mehr. Geht da noch was...?
Dein dynamisches Diagramm werde ich mir auf deiner Page mal anchauen.
Dann könnte ich ja vielleicht mit ner normalen Makroaufzeichnung arbeiten.
Vielen Dank nochmal.
Du hast mir nicht das erste mal geholfen....
Gruß
Hartwig

AW: Dynamischer Bereich Makro Diagramm
10.01.2008 15:36:38
Beverly
Hi Hartwig,
ja, da geht noch etwas - damit ist deine Frage ja beantwortet ;-)))).

Private Sub Worksheet_Change(ByVal Target As Range)
Dim chDiagramm As ChartObject
If Target.Column  1 Then Exit Sub
Application.DisplayAlerts = False
If Target.Count > 1 And Target(1)  "" Then
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects(1).Delete
Set chDiagramm = ActiveSheet.ChartObjects.Add(10, 50, 450, 250)
With chDiagramm.Chart
.ChartType = xlLine
.SetSourceData Source:=Sheets("Tabelle1").Range(Selection.Address), PlotBy _
:=xlColumns
End With
ElseIf Target.Count = 1 Then
If ActiveSheet.ChartObjects.Count > 0 Then ActiveSheet.ChartObjects(1).Delete
Set chDiagramm = ActiveSheet.ChartObjects.Add(10, 50, 450, 250)
With chDiagramm.Chart
.ChartType = xlLine
.SetSourceData Source:=Sheets("Tabelle1").Range("A1:A" & Target.Row), PlotBy _
:=xlColumns
End With
End If
Application.CutCopyMode = False
Application.DisplayAlerts = True
End Sub




Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige