Diagrammerstellung

Bild

Betrifft: Diagrammerstellung
von: Frank
Geschrieben am: 19.03.2005 17:29:08
schönes Wochenende alle miteinander,
wie es aussieht, komme ich wiedermal nicht um Eure Hilfe herum.
Ich habe eine Datei namens werte.xls - in dieser datei gibt es eine gewisse Anzahl an Arbeitsblättern mit den Bezeichnungen Test 01 bis Test 30.
Alle Zellen sind gleich formatiert unterscheiden sich nur in ihren Werten.
Für jedes Arbeitsblatt will ich ein Diagramm erstellen. Ich habe mir was zusammengebastelt und lasse dies für das erste Sheet über eine selbst erstellte Schaltfläche in der Symbolleiste ablaufen.
Jetzt steht dort als Ziel ja "Test 01" drin. wie kann ich das denn umschreiben, dass ich sage - bitte jeweils vom aktiven Arbeitsblatt das Diagramm erstellen.
Gruß Frank + schonmal Danke fürs lesen


Sub diagramm()
    Range("A2:A55").Select
    
    Range("A2:A55,C2:F55").Select
    Range("C2").Activate
    
    Charts.Add
    ActiveChart.ChartType = xlLineMarkers
    ActiveChart.SetSourceData Source:=Sheets("test 01   ").Range("A2:A55,C2:F55" _
        ), PlotBy:=xlColumns
    ActiveChart.SeriesCollection(1).Name = "='test 01   '!R1C3"
    ActiveChart.SeriesCollection(2).Name = "='test 01   '!R1C4"
    ActiveChart.SeriesCollection(3).Name = "='test 01   '!R1C5"
    ActiveChart.SeriesCollection(4).Name = "='test 01   '!R1C6"
    ActiveChart.Location Where:=xlLocationAsObject, Name:="test 01   "
    With ActiveChart
        .HasTitle = False
        .Axes(xlCategory, xlPrimary).HasTitle = False
        .Axes(xlValue, xlPrimary).HasTitle = False
    End With
    ActiveWindow.Visible = False
    Windows("werte.xls").Activate
    Range("A1").Select
    
    ActiveWindow.Visible = False
    Windows("werte.xls").Activate
    Range("A1").Select
End Sub

Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 19.03.2005 18:05:58
indem du den Bereich vom aktiven Blatt als Variable angibst:
Dim ber As Range
Set ber = ActiveSheet.Range("A2:A55,C2:F55")

Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=ber _
, PlotBy:=xlColumns

Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 19.03.2005 19:42:42
Hallo Herbert,
danke für Deine schnelle Hilfe. Funktioniert spitze!!!
Möchte aber noch gerne zwei Anpassungen haben - erstens bei meinem Diagramm stehen die Bezeichnungen meiner vier Linien in Zellen C1, D1, E1, und F1
habe diesen Bereich jetzt benannt mit
Set eich = ActiveSheet.Range("C1:F1")
wenn ich aber dies dort eingebe wo vorher mein test 01 stand gibts eine Fehlermeldung.
ActiveChart.SeriesCollection(1).Name = "='eich '!R1C3"
ActiveChart.SeriesCollection(2).Name = "='eich '!R1C4"
ActiveChart.SeriesCollection(3).Name = "='eich '!R1C5"
ActiveChart.SeriesCollection(4).Name = "='eich '!R1C6"

Und zum anderen, soll es ja nicht als eigenes Sheet erstellt werden sondern im activen Blatt aufpoppen
ActiveChart.Location Where:=xlLocationAsObject, Name:="test 01 "
test 01 gegen aktuelles Blatt austauschen, aber wie???
hatte ebenfalls versucht mit set bereich = activesheet
geht wohl doch nicht so einfach???

Hast Du noch einen Tip
Gruß Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 19.03.2005 20:29:18
du mußt hier genau so vorgehen, wie bei der Datenquelle,
nur halt als "String" deklariert...
den unteren Bereich mußt du auch noch etwas unter die Lupe nehmen,
da hast du etwas doppelt...
zumindest in dem Makro, daß du im ersten Beitrag reinkopiert hast...
Sub diagramm()
Dim ber As Range
Dim n1$, n2$, n3$, n4$
Set ber = ActiveSheet.Range("A2:A55,C2:F55")
n1 = ActiveSheet.[c1]
n2 = ActiveSheet.[d1]
n3 = ActiveSheet.[e1]
n4 = ActiveSheet.[f1]


Charts.Add
ActiveChart.ChartType = xlLineMarkers
ActiveChart.SetSourceData Source:=ber _
, PlotBy:=xlColumns

ActiveChart.SeriesCollection(1).Name = n1
ActiveChart.SeriesCollection(2).Name = n2
ActiveChart.SeriesCollection(3).Name = n3
ActiveChart.SeriesCollection(4).Name = n4
Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 19.03.2005 20:45:34
Yip, yip,
wenn man das bei Euch liest sieht das so einfach aus - hoffe, dass ich irgendwann da auch mal hinkomme.
bin begeistert.
Danke für Deine Hilfe
schönen Abend noch
Gruß Frank

Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 20.03.2005 00:26:54
wenn man den Code etwas optimieren würde,
könnte er auch so aussehen...


Sub diagramm()
Dim ber As Range
Dim n1$, n2$, n3$, n4$
 
With ActiveSheet
 Set ber = .Range("A2:A55,C2:F55")
    n1 = .[c1]
    n2 = .[d1]
    n3 = .[e1]
    n4 = .[f1]
End With
 
    Charts.Add
    
With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=ber, PlotBy:=xlColumns
    .SeriesCollection(1).Name = n1
    .SeriesCollection(2).Name = n2
    .SeriesCollection(3).Name = n3
    .SeriesCollection(4).Name = n4
End With

     
Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 06:54:57
.... das wird ja immer besser!!
danke und gruß Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 07:19:21
Hallo Herbert,
es ist schlimm, immer wenn man denkt, das wars - kommen neue Ideen
Ich habe ja eine unbestimmte Anzahl von Arbeitsblättern. Wegen der Übersichtlichkeit würde ich gern im Diagramm die Überschrift des Blattnamens anzeigen lassen. Dachte mir probierste es mal aus mit unterstehendem Code. Activesheet will VBA dort nicht. Ist doch bestimmt wieder eine einfache Kiste!! oder??
.HasTitle = True
.ChartTitle.Characters.Text = Name.ActiveSheet
Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 21.03.2005 09:13:48
Hallo Frank,
du brauchst das nur umdrehen:
ActiveSheet.Name
Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 17:11:59
Hallo Herbert,
ich wußte, dass das wieder was ganz simples sein mußte. Hatte schon mit Kommas und anstellzeichen + Klammern probiert.
Ich sag ja, für Euch VBA Profis bestimmt Witzfragen - unsereins steht aber wie die Kuh vorm neuen Tor.
Gruß aus Dresden
Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 17:53:15
... ich weiß, werd langsam lästig, aber momentan schreibt es mir in das Diagramm als Überschrift Diagramm1 usw.
Der Titel soll sich aber auf den Namen des Arbeitsblattes beziehen.
Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 21.03.2005 18:57:26
Hallo Frank,
wenn ich mich richtig erinnere,willst du ja das Diagramm
auf das jeweils aktive Blatt einfügen.
dazu mußt du eine String-Variable anlegen,
und jeweils den Namen des Aktiven Blattes in die Variable schreiben.
unter
.Location Where:=xlLocationAsObject, Name:=blN
gibst du dann die Variable an...
und für den Titel kannst du auch gleich diese Variable verwenden...
und für die Deselection des Diagramms drückst du die ESC-Taste...



Sub diagramm()
Dim ber As Range, blN$
Dim n1$, n2$, n3$, n4$
blN = ActiveSheet.Name
With ActiveSheet
 Set ber = .Range("A2:A55,C2:F55")
    n1 = .[c1]
    n2 = .[d1]
    n3 = .[e1]
    n4 = .[f1]
End With
 
Application.ScreenUpdating = False
Charts.Add
    
With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=ber, PlotBy:=xlColumns
    .SeriesCollection(1).Name = n1
    .SeriesCollection(2).Name = n2
    .SeriesCollection(3).Name = n3
    .SeriesCollection(4).Name = n4
    .HasTitle = True
    .ChartTitle.Characters.Text = blN
    .Location Where:=xlLocationAsObject, Name:=blN
End With
   
Application.SendKeys "{esc}"
Application.ScreenUpdating = True
Set ber = Nothing
End Sub

     
Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 19:29:13
... das wird ja immer phantastischer. Ursprünglich wollte ich ja auch dies im aktuellen Sheet haben. Wenn man sich einmal in ein Thema hineingesteigert hat kommen einem immer mehr Ideen. Mittlerweile möchte ich meine Daten in zwei Diagramme aufschlüsseln und wegen der Übersichtlichkeit hatte ich diese als extra Diagrammsheet angelegt. Die neuste Version von Dir werde ich für meine Blätter verwenden, wo ich nur ein Diagramm benötige.
Super - werde jetzt wieder rumexperimentieren bis zum nächsten Problem (für mich) :-)
Gruß Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 20:24:00
das Diagramm wird ja genau in der Mitte plaziert.
wollte jetzt gern die Position ändern. Irgendwas haut hier wieder nicht hin.
Sag bitte nicht wieder Namen drehen - hab alles probiert - sieht für meine Verhältnisse mir aber auch zu einfach aus.

Frank
.Location Where:=xlLocationAsObject, Name:=blN
.ActiveChart.IncrementLeft 195.75
.ActiveChart.IncrementTop -87.75
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 21.03.2005 20:50:11
... habs jetzt so gelöst - nicht schön aber funktioniert :-))
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 1").IncrementLeft -183#
ActiveSheet.Shapes("Diagramm 1").IncrementTop -87#

Gruß Frank
Bild

Betrifft: AW: Diagrammerstellung
von: Herbert H.
Geschrieben am: 21.03.2005 22:59:23
wenn du es mit so wenig Code als nötig einbauen willst,
sollte es in etwa so aussehen:


Sub diagramm()
Dim ber As Range, blN$
Dim n1$, n2$, n3$, n4$
blN = ActiveSheet.Name
With ActiveSheet
 Set ber = .Range("A2:A55,C2:F55")
    n1 = .[c1]
    n2 = .[d1]
    n3 = .[e1]
    n4 = .[f1]
    Application.ScreenUpdating = False
    Charts.Add
    
    With ActiveChart
        .ChartType = xlLineMarkers
        .SetSourceData Source:=ber, PlotBy:=xlColumns
        .SeriesCollection(1).Name = n1
        .SeriesCollection(2).Name = n2
        .SeriesCollection(3).Name = n3
        .SeriesCollection(4).Name = n4
        .HasTitle = True
        .ChartTitle.Characters.Text = blN
        .Location Where:=xlLocationAsObject, Name:=blN
    End With
   
    .Shapes(2).IncrementLeft -183#
    .Shapes(2).IncrementTop -87#
End With
With Application
    .SendKeys "{esc}"
    .ScreenUpdating = True
End With
Set ber = Nothing
End Sub

     
bei deinem Beispiel steht der Diagrammname im code,
wenn es "Diagramm1" nicht gibt,funktionierts schon nicht...
Shapes(2) deswegen, wenn man in der Tabelle eine Schaltfläche zum
Ausführen des Makros hat, ist das "Shapes(1),
das Diagramm Shapes(2)...
führst du das Makro aus der Symbolleiste aus,
kannst du Shapes(1)nehmen, vorausgesetzt, du hast keine anderen Shapes
in der Tabelle..
Gruß Herbert
Bild

Betrifft: AW: Diagrammerstellung
von: Frank
Geschrieben am: 22.03.2005 06:54:14
Hallo Herbert,
jetzt funktioniert es so, wie ich mir die gesamte Geschichte "Datenaufbereitung und Diagrammerstellung" vor zwei Wochen vorgestellt habe. Es gibt helle Köpfe, die schaffen alles in zwei Stunden wo unsereins zwei wochen braucht.
Danke für Deine grandiose Hilfe - natürlich auch den anderen bei den anderen Threads
Frohes Osterfest
Frank
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Pivot-Problem: Tage eines Monats gruppieren "