Live-Forum - Die aktuellen Beiträge
Datum
Titel
07.12.2024 17:25:12
07.12.2024 16:21:30
07.12.2024 15:22:10
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender Navigationstipps
Inhaltsverzeichnis

Diagrammerstellung

Diagrammerstellung
19.03.2005 17:29:08
Frank
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

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Diagrammerstellung
19.03.2005 18:05:58
Herbert
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
AW: Diagrammerstellung
19.03.2005 19:42:42
Frank
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
Anzeige
AW: Diagrammerstellung
19.03.2005 20:29:18
Herbert
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
Anzeige
AW: Diagrammerstellung
19.03.2005 20:45:34
Frank
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

AW: Diagrammerstellung
20.03.2005 00:26:54
Herbert
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
Anzeige
AW: Diagrammerstellung
21.03.2005 06:54:57
Frank
.... das wird ja immer besser!!
danke und gruß Frank
AW: Diagrammerstellung
21.03.2005 07:19:21
Frank
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
AW: Diagrammerstellung
21.03.2005 09:13:48
Herbert
Hallo Frank,
du brauchst das nur umdrehen:
ActiveSheet.Name
Gruß Herbert
Anzeige
AW: Diagrammerstellung
21.03.2005 17:11:59
Frank
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
AW: Diagrammerstellung
21.03.2005 17:53:15
Frank
... 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
AW: Diagrammerstellung
21.03.2005 18:57:26
Herbert
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
Anzeige
AW: Diagrammerstellung
21.03.2005 19:29:13
Frank
... 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
AW: Diagrammerstellung
21.03.2005 20:24:00
Frank
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
Anzeige
AW: Diagrammerstellung
21.03.2005 20:50:11
Frank
... 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
AW: Diagrammerstellung
21.03.2005 22:59:23
Herbert
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
Anzeige
AW: Diagrammerstellung
22.03.2005 06:54:14
Frank
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige