Discussion:
Punktediagramm (XY): Punktgröße automatisch ändern?
(zu alt für eine Antwort)
andreas schneider
2006-08-08 08:43:20 UTC
Permalink
Hallo!

Ich habe unter Excel 2000 mehrere Punktediagramme von einem Kunden erhalten.
Da einzelnen Punkte sollen später unterschiedlich groß sein.

Bisher ist das so gelöst, dass man einen Punkt manuell anklickt und dann
die Größe des entsprechenden Punktsymbols ändert.

Ich möchte die gerne automatisieren. Es sollte möglich sein, ähnlich wie
beim Blasendiagramm noch die Werte für die Größe des Punktes anzugeben.
Geht aber leider nicht.

Weiß jemand wie man die Größe der Punkt automatisch anpassen kann?

danke

andreas
Jean Ruch
2006-08-08 10:30:02 UTC
Permalink
Post by andreas schneider
Hallo!
Ich habe unter Excel 2000 mehrere Punktediagramme von einem Kunden erhalten.
Da einzelnen Punkte sollen später unterschiedlich groß sein.
Bisher ist das so gelöst, dass man einen Punkt manuell anklickt und dann
die Größe des entsprechenden Punktsymbols ändert.
Ich möchte die gerne automatisieren. Es sollte möglich sein, ähnlich wie
beim Blasendiagramm noch die Werte für die Größe des Punktes anzugeben.
Geht aber leider nicht.
Weiß jemand wie man die Größe der Punkt automatisch anpassen kann?
danke
andreas
Hallo Andreas,
Post by andreas schneider
Geht aber leider nicht.
Wo gibt es denn so was ?

Spaß beiseite. Du mußt das über VBA machen.
Das geht über die *Markersize* - Eigenshaft, bezogen auf die jeweilige
Points(). der Seriescollection() Deines Diagramms.
Du mußt allerdings ein eindeutiges Kriterium haben wonach Du Deine Punkte
*automatisch* dimensionieren willst....

mit freundlichem Gruß

Jean
andreas schneider
2006-08-08 10:55:33 UTC
Permalink
Danke für den Tipp. Aber VBA is ein rotes Tuch für mich. Keine Ahnung,
null, nur Bahnhof...:)

Kannst Du das etwas präzisieren?

Eindeutiges Kriterium für automatische Dimensionierung der Punkte hätte
ich....

danke andreas
Post by Jean Ruch
Post by andreas schneider
Hallo!
Ich habe unter Excel 2000 mehrere Punktediagramme von einem Kunden erhalten.
Da einzelnen Punkte sollen später unterschiedlich groß sein.
Bisher ist das so gelöst, dass man einen Punkt manuell anklickt und dann
die Größe des entsprechenden Punktsymbols ändert.
Ich möchte die gerne automatisieren. Es sollte möglich sein, ähnlich wie
beim Blasendiagramm noch die Werte für die Größe des Punktes anzugeben.
Geht aber leider nicht.
Weiß jemand wie man die Größe der Punkt automatisch anpassen kann?
danke
andreas
Hallo Andreas,
Post by andreas schneider
Geht aber leider nicht.
Wo gibt es denn so was ?
Spaß beiseite. Du mußt das über VBA machen.
Das geht über die *Markersize* - Eigenshaft, bezogen auf die jeweilige
Points(). der Seriescollection() Deines Diagramms.
Du mußt allerdings ein eindeutiges Kriterium haben wonach Du Deine Punkte
*automatisch* dimensionieren willst....
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-08 12:26:22 UTC
Permalink
Post by andreas schneider
Danke für den Tipp. Aber VBA is ein rotes Tuch für mich. Keine Ahnung,
null, nur Bahnhof...:)
Kannst Du das etwas präzisieren?
Eindeutiges Kriterium für automatische Dimensionierung der Punkte hätte
ich....
danke andreas
Hallo Andreas,
Post by andreas schneider
Kannst Du das etwas präzisieren?
Damit meine ich eine eindeutige Beziehung,mit der Du den jeweiligen Punkten
ihre Größe zuordnest...( eine Schleife z.B. wie im folgende Beispiel:

Erstelle mal ein xy-Diagramm aus folgender Datenmenge
x von 0 bis 10
y = x² entsprechend
Klicke Dein Diagramm an und lass dieses Makro laufen:


Sub Punkt_Größe_verändern()

For n = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(n).Select

With Selection
.MarkerStyle = xlDiamond
.MarkerSize = 2 * n
End With
Next

End Sub


N.B.
Wenn Du wirklich > Keine Ahnung, null, nur Bahnhof...:) hast,
versuch's mal so:
Rechtsklick auf den Reiter Deines Blattes (Nimm einfach ein neues Blatt)
Code anzeigen wählen
Das obige Makro da reinkopieren ( von Sub... bis... End Sub )

Das Fenster so platzieren, dass du auch Das Diagramm im Blick hast.
wenn soweit, Diagramm anklicken,
im CodeFenster irgendwo in den Text reinklicken und F5 drücken

Müsstest Du doch schaffen.... ;-))

mit freundlichem Gruß

Jean
andreas schneider
2006-08-08 15:11:14 UTC
Permalink
Danke schon es funktioniert mit der Größenänderung. Muss morgen mal
schauen ob ich dass soweit abwandeln kann wie ich es benötige.

Danke einstweilen. Vielleicht muss ich mich noch mal melden:)

andreas
Post by Jean Ruch
Post by andreas schneider
Danke für den Tipp. Aber VBA is ein rotes Tuch für mich. Keine Ahnung,
null, nur Bahnhof...:)
Kannst Du das etwas präzisieren?
Eindeutiges Kriterium für automatische Dimensionierung der Punkte hätte
ich....
danke andreas
Hallo Andreas,
Post by andreas schneider
Kannst Du das etwas präzisieren?
Damit meine ich eine eindeutige Beziehung,mit der Du den jeweiligen Punkten
Erstelle mal ein xy-Diagramm aus folgender Datenmenge
x von 0 bis 10
y = x² entsprechend
Sub Punkt_Größe_verändern()
For n = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerStyle = xlDiamond
.MarkerSize = 2 * n
End With
Next
End Sub
N.B.
Wenn Du wirklich > Keine Ahnung, null, nur Bahnhof...:) hast,
Rechtsklick auf den Reiter Deines Blattes (Nimm einfach ein neues Blatt)
Code anzeigen wählen
Das obige Makro da reinkopieren ( von Sub... bis... End Sub )
Das Fenster so platzieren, dass du auch Das Diagramm im Blick hast.
wenn soweit, Diagramm anklicken,
im CodeFenster irgendwo in den Text reinklicken und F5 drücken
Müsstest Du doch schaffen.... ;-))
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-08 15:31:02 UTC
Permalink
Post by andreas schneider
Danke schon es funktioniert mit der Größenänderung. Muss morgen mal
schauen ob ich dass soweit abwandeln kann wie ich es benötige.
Danke einstweilen. Vielleicht muss ich mich noch mal melden:)
andreas
Hallo Andreas,

Danke für die Rückmeldung und wie Du schreibst, bei Problemen melde Dich
ruhig zurück; wir werden versuchen eine Lösung zu finden.
Denke auch an die Hilfe und den Makrofollower, Eine Aufzeichnung, wenn auch
meist voller unnützem Zeug, kann ganz schön nützlich sein, um die richtige
Syntax zu erwischen.

mit freundlichem Gruß

Jean
andreas schneider
2006-08-08 15:24:02 UTC
Permalink
So habs gleich mal probiert:
Ich hatte vergessen zu erwähnen, dass jeder Punkt ein anderes Symbol
ist, also eine eigene Datenreihe. Weiter sollte es neben der x und der y
eine Spalte geben, in der die Werte, von der die Größe der Punkte
abhängig sein sollen, eingetragen werden. Es gibt für diese Werte
eigentlich nur 3 Größen: 1 (klein), 2 (mittel) und 3 (groß).

Kann man das so mit Deinem Makro lösen?

danke

andreas
Post by Jean Ruch
Post by andreas schneider
Danke für den Tipp. Aber VBA is ein rotes Tuch für mich. Keine Ahnung,
null, nur Bahnhof...:)
Kannst Du das etwas präzisieren?
Eindeutiges Kriterium für automatische Dimensionierung der Punkte hätte
ich....
danke andreas
Hallo Andreas,
Post by andreas schneider
Kannst Du das etwas präzisieren?
Damit meine ich eine eindeutige Beziehung,mit der Du den jeweiligen Punkten
Erstelle mal ein xy-Diagramm aus folgender Datenmenge
x von 0 bis 10
y = x² entsprechend
Sub Punkt_Größe_verändern()
For n = 1 To ActiveChart.SeriesCollection(1).Points.Count
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerStyle = xlDiamond
.MarkerSize = 2 * n
End With
Next
End Sub
N.B.
Wenn Du wirklich > Keine Ahnung, null, nur Bahnhof...:) hast,
Rechtsklick auf den Reiter Deines Blattes (Nimm einfach ein neues Blatt)
Code anzeigen wählen
Das obige Makro da reinkopieren ( von Sub... bis... End Sub )
Das Fenster so platzieren, dass du auch Das Diagramm im Blick hast.
wenn soweit, Diagramm anklicken,
im CodeFenster irgendwo in den Text reinklicken und F5 drücken
Müsstest Du doch schaffen.... ;-))
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-08 19:40:34 UTC
Permalink
Post by andreas schneider
Ich hatte vergessen zu erwähnen, dass jeder Punkt ein anderes Symbol
ist, also eine eigene Datenreihe. Weiter sollte es neben der x und
der y eine Spalte geben, in der die Werte, von der die Größe der
Punkte abhängig sein sollen, eingetragen werden. Es gibt für diese
Werte eigentlich nur 3 Größen: 1 (klein), 2 (mittel) und 3 (groß).
Kann man das so mit Deinem Makro lösen?
Hallo Andreas,

in Deinem ersten Posting sagtest Du: >Ich habe mehrere Punktediagramme
von einem Kunden erhalten.
Aus Deinem letzten glaube ich entnehmen zu können, dass Du auch über
die Daten, die diesen Diagrammen zugrunde liegen verfügst.
Es wäre wirklich von Vorteil, wenn Du uns mitteilen würdest, wie diese
Daten angeordnet sind, samt der Stelle, wo dieKennzahl(en), die die
Größe der Punkte (eventuell auch für die Art der Symbole bzw deren
Farbe?) bestimmen hin kommen.
Noch besser: Du könntest mir einfach ein repräsentatives *Beispiel*
mailen ? Sollte es sich um vertrauliche Informationen handeln, kannst
Du sie ja vorher verfremden...
Der Vorteil dabei ist, dass man nicht lange unnötig aneinander vorbei
redet und es macht schon ein kleiner Unterschied, nur mal als Beispiel,
ob die Diagramme Spalten oder Reihen orientiert sind.....

mit freundlichem Gruß

Jean
Jean Ruch
2006-08-10 00:13:05 UTC
Permalink
Post by Jean Ruch
Noch besser: Du könntest mir einfach ein repräsentatives *Beispiel*
mailen ?
Hallo Andreas,

Danke für die Zusendung der Datei.
Hab sie sehr spät (aber zum Glück doch noch) entdeckt, da sie bei mir
in Klasse "spamverdächtig" eingestuft worden war....

Anhand dieser habe ich (wohl per VBA) die leere Spalte L mit einer lfd
Nr ergänzt und die Spalte Q in Höhe der Daten mit einer Wennformel mit
einer Größenbeurteilung, reduziert auf drei Werten gefüllt.

Die Datenbeschriftung habe ich auf dem per VBA erstellten Diagramm mit
dem Chart-Labeler
händisch nachgeholt

Die Vorgehensweise habe ich zuerst mal so vorgenommen, ähnlich wie ich
sie Dir in dem Zwischenposting mitgeteilt habe: Form und Farbe der
Symbole in etwa wie Du sie hattest, Größe nach Formel auf drei Größen
reduziert auf Basis Deiner Bewertungskriterien.
Du siehst aber, dass Du ziemlich frei bist alles zu bestimmen per Code.

Ich schicke Dir den Code zu per Mail mit der Datei

mit freundlichem Gruß

Jean
andreas schneider
2006-08-10 09:23:44 UTC
Permalink
Hallo Jean!

Danke für Dein Makro. Funktioniert alles klasse.

Nur eine Sache passt noch nicht ganz: Als Legende wird neben dem
Diagramm der Inhalt von M6:M23 angezeigt. Die Legende sollte aber A6:A23
sein.

Ich hab schon das Makro durchsucht, finde aber nichts wo ich das ändern
könnte.

Wäre super wenn Du das noch machbar machen könntest, sofern realisierbar:)

danke andreas
Post by Jean Ruch
Post by Jean Ruch
Noch besser: Du könntest mir einfach ein repräsentatives *Beispiel*
mailen ?
Hallo Andreas,
Danke für die Zusendung der Datei.
Hab sie sehr spät (aber zum Glück doch noch) entdeckt, da sie bei mir in
Klasse "spamverdächtig" eingestuft worden war....
Anhand dieser habe ich (wohl per VBA) die leere Spalte L mit einer lfd
Nr ergänzt und die Spalte Q in Höhe der Daten mit einer Wennformel mit
einer Größenbeurteilung, reduziert auf drei Werten gefüllt.
Die Datenbeschriftung habe ich auf dem per VBA erstellten Diagramm mit
dem Chart-Labeler
händisch nachgeholt
Die Vorgehensweise habe ich zuerst mal so vorgenommen, ähnlich wie ich
sie Dir in dem Zwischenposting mitgeteilt habe: Form und Farbe der
Symbole in etwa wie Du sie hattest, Größe nach Formel auf drei Größen
reduziert auf Basis Deiner Bewertungskriterien.
Du siehst aber, dass Du ziemlich frei bist alles zu bestimmen per Code.
Ich schicke Dir den Code zu per Mail mit der Datei
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-08 22:19:20 UTC
Permalink
Post by andreas schneider
Ich hatte vergessen zu erwähnen, dass jeder Punkt ein anderes Symbol
ist, also eine eigene Datenreihe. Weiter sollte es neben der x und
der y eine Spalte geben, in der die Werte, von der die Größe der
Punkte abhängig sein sollen, eingetragen werden. Es gibt für diese
Werte eigentlich nur 3 Größen: 1 (klein), 2 (mittel) und 3 (groß).
Kann man das so mit Deinem Makro lösen?
Hallo Andreas,

Kann man das so mit Deinem Makro lösen?

Ich würde sagen Nein in direkter Form. Man muß schon ein wenig an Deine
Gegebenheiten anpassen.

Unabhängig davon habe ich Dir aber mal ein Weg aufgezeichnet, wo man
ähnlich wie bei BubbleCharts, die Koordinaten X und Y und ein
Parameter für die Größe der Symbole vorab festlegen kann
Der Unterschied zum Blasen-Diagramm ist, dass Du hier jedem Punkt sein
eigenes Symbol , eine Farbe und eine Größe fest zuordnen kannst, und
nicht nur ein Kreis gleicher Farbe für alle.
Das Makro dürfte übersichtlich genug sein, (dafür ist es kein
Glanzstück für pfiffige Programmierung....)
Achte aber darauf, dass ohne Anpassung, Du ein Blatt "Tabelle4"
zugrunde legen musst.
Dann in diesem Blatt
in B3 ...B9 die Zahlenreihe 1 bis 7 als X-Werte;
in C3....C9 die entsprechenden Y Werte (Bei mir in der Folge
7,5,7,4,5,7,3)
in D3...D9 ein Maß für die Größe des Symbols ( dieser Wert wird der
jeweiligen MarkerSize Eigenschaft durch das Makro zugewiesen.)

Jetzt kannst Du noch als Spaltenkopf ein X in B2; ein Y in C2 und den
Text "Größe" in D2.
schreiben.

Ansonsten, als ungeübter (?) VBA Nutzer (Aber auch das wird sich
ändern!) geh wieder so vor wie beim ersten Makro:
Rechtsklick auf den Tabellenreiter ( muss hier eine Tabelle4 sein)
klicke auf Code anzeigen und kopiere folgendes Makro in das Fenster
das sich auftut.

Wenn es soweit ist, setze den Cursor irgendwo in den Bereich des Makros
(zwischen Sub und End Sub) und drücke F5.
jetzt kannst Du ja schon einmal Änderungen vornehmen und sehen was
passiert....
Der Makrorecorder verrät Dir was Du vielleicht (noch) nicht so richtig
beherschst....Farbe, Form /Symbolname, Größe etc...)
Die Größe änderst Du indem Du andere Zahlenwerte in den Bereich D3:D9
eingibst ( min = 2 max= 72 )

Viel Spaß und freundlicher Gruß


Jean

Sub Punkt_Größen()

Sheets("Tabelle4").Select

Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("Tabelle4").Range("B3:C9")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Tabelle4"

n = 1
Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 35
.MarkerForegroundColorIndex = 10
.MarkerStyle = xlTriangle
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 6
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 35
.MarkerForegroundColorIndex = 10
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 6
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 5
.MarkerForegroundColorIndex = 5
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

Größe = Application.WorksheetFunction.VLookup(n,
Sheets("Tabelle4").Range("B3:D9"), 3)
ActiveChart.SeriesCollection(1).Points(n).Select
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With


End Sub
Jean Ruch
2006-08-09 15:53:30 UTC
Permalink
Post by Jean Ruch
Die Größe änderst Du indem Du andere Zahlenwerte in den Bereich D3:D9
eingibst ( min = 2 max= 72 )
Hallo Andreas,

Bei Größe 2 musst Du aber Deine Brille aufsetzen!....

Es ist aber nicht deshalb, dass ich mich melde.
Ich hörte nichts von Dir, da hab ich mir gesagt: sieh doch mal nach, ob
das Teil auch so läuft, wie ich es vor dem Abschicken bei mir getestet
hatte...
Beim Testen des Makros mit dem Code aus dem Posting heraus, fällt dann
auf, dass der Newsreader einen Zeilenumbruch durchgeführt hat in einer
Art, die VBA nicht mag und einen Teil des Codes in roter Schrift
erscheinen läßt. (was auf fehlerhafte Syntax hinweist)
Nur zur Info: Wenn man VBA-gerecht einen Zeilenumbruch durchführen
will, muss man diesen mit
der Tastenfolge Space / Unterstrich / Enter durchführen und nicht
einfach so....

Geh also bitte dann mit dem Cursor im Code an das Ende der ersten Linie
in rot und drücke die Taste "Entfernen", so dass die zweite Linie in
roter SChrift nach oben geholt wird
Wenn jetzt alles wieder richtig ist, so wird die Schriftfarbe auch
wieder schwartz

Nun brauchst Du nur noch ein paar Zahlen Deiner Wahl in den Bereich
D3...D9 einzugeben, der die Größe Deiner Symbole bestimmen wird.
Starte das Makro wieder indem Du den Cursor irgendwo in den Code
bringst und drücke die Taste F5. (Bequemer wäre es natürlich mit einer
Tastenkombination zu starten, aber wie das geht erzähle ich Dir wenn
Du weiter Interesse hast.)

mit freundlichem Gruß

Jean
andreas schneider
2006-08-10 07:41:30 UTC
Permalink
Hallo Jean!

Danke für Dein Makro. Funktioniert alles klasse.

Nur eine Sache passt noch nicht ganz: Als Legende wird neben dem
Diagramm der Inhalt von M6:M23 angezeigt. Die Legende sollte aber A6:A23
sein.

Ich hab schon das Makro durchsucht, finde aber nichts wo ich das ändern
könnte.

Wäre super wenn Du das noch machbar machen könntest, sofern realisierbar:)

danke andreas
Post by Jean Ruch
Post by Jean Ruch
Die Größe änderst Du indem Du andere Zahlenwerte in den Bereich D3:D9
eingibst ( min = 2 max= 72 )
Hallo Andreas,
Bei Größe 2 musst Du aber Deine Brille aufsetzen!....
Es ist aber nicht deshalb, dass ich mich melde.
Ich hörte nichts von Dir, da hab ich mir gesagt: sieh doch mal nach, ob
das Teil auch so läuft, wie ich es vor dem Abschicken bei mir getestet
hatte...
Beim Testen des Makros mit dem Code aus dem Posting heraus, fällt dann
auf, dass der Newsreader einen Zeilenumbruch durchgeführt hat in einer
Art, die VBA nicht mag und einen Teil des Codes in roter Schrift
erscheinen läßt. (was auf fehlerhafte Syntax hinweist)
Nur zur Info: Wenn man VBA-gerecht einen Zeilenumbruch durchführen will,
muss man diesen mit
der Tastenfolge Space / Unterstrich / Enter durchführen und nicht
einfach so....
Geh also bitte dann mit dem Cursor im Code an das Ende der ersten Linie
in rot und drücke die Taste "Entfernen", so dass die zweite Linie in
roter SChrift nach oben geholt wird
Wenn jetzt alles wieder richtig ist, so wird die Schriftfarbe auch
wieder schwartz
Nun brauchst Du nur noch ein paar Zahlen Deiner Wahl in den Bereich
D3...D9 einzugeben, der die Größe Deiner Symbole bestimmen wird.
Starte das Makro wieder indem Du den Cursor irgendwo in den Code
bringst und drücke die Taste F5. (Bequemer wäre es natürlich mit einer
Tastenkombination zu starten, aber wie das geht erzähle ich Dir wenn Du
weiter Interesse hast.)
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-10 10:05:51 UTC
Permalink
Post by andreas schneider
Hallo Jean!
Danke für Dein Makro. Funktioniert alles klasse.
Nur eine Sache passt noch nicht ganz: Als Legende wird neben dem
Diagramm der Inhalt von M6:M23 angezeigt. Die Legende sollte aber
A6:A23 sein.
Ich hab schon das Makro durchsucht, finde aber nichts wo ich das
ändern könnte.
Wäre super wenn Du das noch machbar machen könntest, sofern
realisierbar:)
danke andreas
Hallo Andreas,

Danke für die Rückmeldung.
Um den letzten Wunsch auch noch zu implementieren, werde ich Dir eine
Lösung zuschicken.
Hab nur ein wenig Geduld.
Im Moment muss ich zuerst noch was anderes erledigen
Ich denke auch, das Ganze wird sogar etwas einfacher.

mit freundlichem Gruß....

Jean
andreas schneider
2006-08-10 10:15:32 UTC
Permalink
Ja danke. Super. Ich wollte niemanden drängen:)

Danke

andreas
Post by Jean Ruch
Post by andreas schneider
Hallo Jean!
Danke für Dein Makro. Funktioniert alles klasse.
Nur eine Sache passt noch nicht ganz: Als Legende wird neben dem
Diagramm der Inhalt von M6:M23 angezeigt. Die Legende sollte aber
A6:A23 sein.
Ich hab schon das Makro durchsucht, finde aber nichts wo ich das
ändern könnte.
Wäre super wenn Du das noch machbar machen könntest, sofern
realisierbar:)
danke andreas
Hallo Andreas,
Danke für die Rückmeldung.
Um den letzten Wunsch auch noch zu implementieren, werde ich Dir eine
Lösung zuschicken.
Hab nur ein wenig Geduld.
Im Moment muss ich zuerst noch was anderes erledigen
Ich denke auch, das Ganze wird sogar etwas einfacher.
mit freundlichem Gruß....
Jean
Jean Ruch
2006-08-10 22:08:50 UTC
Permalink
Post by andreas schneider
Ja danke. Super. Ich wollte niemanden drängen:)
Danke
andreas
Hallo Andreas,
Post by andreas schneider
Ich wollte niemanden drängen
So ist das auch nicht angekommen...

Im Folgenden, also eine andere Version, wo auch die Legende zu
gebrauchen ist.
Die Datenbeschriftung läßt sich ganz gut anbringen (XP) mit
Diagramm-Optionen / Datenbeschriftung / DatenreihenName
Das Diagramm wird auf einem neuen Blatt angefertigt, das man umbenennen
sollte, sonst kann man keine zweite Version herbeiführen.
Die endgültige Gestaltung liegt aber ganz bei Dir....

Ich habe auch eine kürzere Version erprobt, wo die original Excel
Reihenfolge und Farben beibehalten werden. (Nur die Größe wird dann
verändert). Sieht aber nicht besonders aus und ich denke diese längere
Version ist Dir von größerem Nutzen.

Probier sie mal aus...

mit freundlichem Gruß

Jean



Sub Diagramm_Punkte_selbst_bestimmen()

'Ausgehend von der Datei "Punktdiagramm", die im Fenster steht
'z.B. indem dieser Code in die Tabelle eingefügt wird nach
'Rechtsklick auf Tabellenreiter/Code anzeigen/dann diesen Code
einfügen
'Zum Abspielen: Cursor irgendwo in den Text stellen und F5 drücken

Sheets.Add
ActiveSheet.Name = "Benenne_mich"

Sheets("Image und Marke 1").Range("M6:N24").Copy _

Sheets("Benenne_mich").Range("B3").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues

Sheets("Benenne_mich").Select
With ActiveSheet
.Range("A3").Value = 1
.Range("A4").Value = 2
End With
ActiveSheet.Range("A3:A4").Select
Selection.AutoFill Destination:=ActiveSheet.Range("A3:A21")

With Sheets("Benenne_mich")
.Range("B20").Value = 0
.Range("C20").Value = 0
.Range("T20").Value = 0
.Range("C3").Select
End With

n = 1
Do While Not IsEmpty(ActiveCell.Offset(1, 0))
ActiveCell.Offset(1, 0).Select
ActiveCell.Copy
Selection.Offset(0, n).Value = ActiveCell.Value
n = n + 1
Loop

With Sheets("Benenne_mich")
.Range("C4:C21").ClearContents
End With

Sheets("Image und Marke 1").Range("P6:P24").Copy
Sheets("Benenne_mich").Range("V3").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues

'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Zur Größenbestimmung der Symbole
'hier: 12 / 24 / 36 Excel-Punkte
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

'Kriterium für die Größe der Symbolen:
ActiveSheet.Range("W3:W21").FormulaLocal = _
"=WENN(V3<0,25;12;WENN(V3<0,50;24;36))"

'Für den Durchnittswert wird Größe auf 20 gesetzt durch
ActiveSheet.Range("W21").Value = 20
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

With ActiveSheet
.Range("C2").Formula = "a"
.Range("D2").Formula = "b"
.Range("U2").Formula = "Durchschnitt"
End With

ActiveSheet.Range("C2:D2").Select
Selection.AutoFill Destination:=ActiveSheet. _
Range("C2:T2"), Type:=xlFillDefault

Charts.Add
ActiveChart.SetSourceData _
Source:=Sheets("Benenne_mich").Range("B2:U21")
ActiveChart.Location _
Where:=xlLocationAsObject, Name:="Benenne_mich"

ActiveChart.PlotBy = xlColumns

With ActiveChart.Axes(xlCategory)
.MinimumScale = -1.5
.MaximumScale = 1.5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.CrossesAt = 1
End With

With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = 3.5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.CrossesAt = 1
End With

ActiveSheet.ChartObjects("Diagramm 1").Activate
k = ActiveChart.SeriesCollection.Count
n = 1



'Punkt a
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 11
.MarkerForegroundColorIndex = 11
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1

'Punkt b
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 7
.MarkerForegroundColorIndex = 7
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

'Punkt c
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 6
.MarkerForegroundColorIndex = 6
.MarkerStyle = xlTriangle
.MarkerSize = Größe
End With
n = n + 1

'Punkt d
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 33
.MarkerForegroundColorIndex = 33
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

'Punkt e
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = 30
.MarkerStyle = xlStar
.MarkerSize = Größe
End With
n = n + 1

'Punkt f
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 9
.MarkerForegroundColorIndex = 9
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1


'Punkt g
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = 23
.MarkerStyle = xlPlus
.MarkerSize = Größe
End With
n = n + 1

'Punkt h
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 1
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

'Punkt i
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 42
.MarkerForegroundColorIndex = 42
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1

'Punkt j
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 46
.MarkerForegroundColorIndex = 46
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1

'Punkt k
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 35
.MarkerForegroundColorIndex = 35
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

'Punkt l
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 44
.MarkerForegroundColorIndex = 44
.MarkerStyle = xlTriangle
.MarkerSize = Größe
End With
n = n + 1

'Punkt m
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 41
.MarkerForegroundColorIndex = 41
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

'Punkt n
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 53
.MarkerForegroundColorIndex = 53
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

'Punkt o
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 39
.MarkerForegroundColorIndex = 39
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1

'Punkt p
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 40
.MarkerForegroundColorIndex = 40
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1

'Punkt q
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 51
.MarkerForegroundColorIndex = 51
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 2

'Punkt Durchschnitt
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With



ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartType = xlXYScatter
ActiveChart.ChartTitle.Delete

ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 1").IncrementLeft -231.75
ActiveSheet.Shapes("Diagramm 1").IncrementTop -143.25
ActiveSheet.Shapes("Diagramm 1").ScaleWidth 1.94, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 1").ScaleHeight 1.96, msoFalse, _
msoScaleFromTopLeft

'dies zu Verlangsamung; sonst rafft der Rechner
'das nur im Einzelschritt :-)) ??

ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Select
With Selection.Font
.Name = "Arial"
.Size = 12
End With

End Sub
andreas schneider
2006-08-11 09:44:12 UTC
Permalink
Hallo Jean,

erstmal Danke für Dein Makro.
Folgendes Problem tritt bei mir noch auf (im Büro nutze ich Excel 2000;
der Fehler tritt aber auch unter 2003 auf):

Wenn ich das Makro laufen lasse, wird auf dem neuen Tabellenblatt
Benenne_mich ein Balkendiagramm angezeigt, statt eines Punktediagramms.
Außerdem bekomme ich die Fehlermeldung "Laufzeitfehler 1004: Die
MinimumScale Eigenschaft des Axis Objekts kann nicht festgelegt werden"

Meiner Meinung nach wird aus diesem Grund das makro nicht
weiterausgeführt und nicht als Punktediagramm dargstellt.

Allerdings habe ich nichts gefunden, wie ich die Fehlermeldung
beseitigen kann.

Vielleicht kannst Du ja nocheinmal drüberschaun:)

Nochmals 1000 Dank.

andreas
Post by Jean Ruch
Post by andreas schneider
Ja danke. Super. Ich wollte niemanden drängen:)
Danke
andreas
Hallo Andreas,
Post by andreas schneider
Ich wollte niemanden drängen
So ist das auch nicht angekommen...
Im Folgenden, also eine andere Version, wo auch die Legende zu
gebrauchen ist.
Die Datenbeschriftung läßt sich ganz gut anbringen (XP) mit
Diagramm-Optionen / Datenbeschriftung / DatenreihenName
Das Diagramm wird auf einem neuen Blatt angefertigt, das man umbenennen
sollte, sonst kann man keine zweite Version herbeiführen.
Die endgültige Gestaltung liegt aber ganz bei Dir....
Ich habe auch eine kürzere Version erprobt, wo die original Excel
Reihenfolge und Farben beibehalten werden. (Nur die Größe wird dann
verändert). Sieht aber nicht besonders aus und ich denke diese längere
Version ist Dir von größerem Nutzen.
Probier sie mal aus...
mit freundlichem Gruß
Jean
Sub Diagramm_Punkte_selbst_bestimmen()
'Ausgehend von der Datei "Punktdiagramm", die im Fenster steht
'z.B. indem dieser Code in die Tabelle eingefügt wird nach
'Rechtsklick auf Tabellenreiter/Code anzeigen/dann diesen Code einfügen
'Zum Abspielen: Cursor irgendwo in den Text stellen und F5 drücken
Sheets.Add
ActiveSheet.Name = "Benenne_mich"
Sheets("Image und Marke 1").Range("M6:N24").Copy _
Sheets("Benenne_mich").Range("B3").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues
Sheets("Benenne_mich").Select
With ActiveSheet
.Range("A3").Value = 1
.Range("A4").Value = 2
End With
ActiveSheet.Range("A3:A4").Select
Selection.AutoFill Destination:=ActiveSheet.Range("A3:A21")
With Sheets("Benenne_mich")
.Range("B20").Value = 0
.Range("C20").Value = 0
.Range("T20").Value = 0
.Range("C3").Select
End With
n = 1
Do While Not IsEmpty(ActiveCell.Offset(1, 0))
ActiveCell.Offset(1, 0).Select
ActiveCell.Copy
Selection.Offset(0, n).Value = ActiveCell.Value
n = n + 1
Loop
With Sheets("Benenne_mich")
.Range("C4:C21").ClearContents
End With
Sheets("Image und Marke 1").Range("P6:P24").Copy
Sheets("Benenne_mich").Range("V3").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
'Zur Größenbestimmung der Symbole
'hier: 12 / 24 / 36 Excel-Punkte
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ActiveSheet.Range("W3:W21").FormulaLocal = _
"=WENN(V3<0,25;12;WENN(V3<0,50;24;36))"
'Für den Durchnittswert wird Größe auf 20 gesetzt durch
ActiveSheet.Range("W21").Value = 20
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
With ActiveSheet
.Range("C2").Formula = "a"
.Range("D2").Formula = "b"
.Range("U2").Formula = "Durchschnitt"
End With
ActiveSheet.Range("C2:D2").Select
Selection.AutoFill Destination:=ActiveSheet. _
Range("C2:T2"), Type:=xlFillDefault
Charts.Add
ActiveChart.SetSourceData _
Source:=Sheets("Benenne_mich").Range("B2:U21")
ActiveChart.Location _
Where:=xlLocationAsObject, Name:="Benenne_mich"
ActiveChart.PlotBy = xlColumns
With ActiveChart.Axes(xlCategory)
.MinimumScale = -1.5
.MaximumScale = 1.5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.CrossesAt = 1
End With
With ActiveChart.Axes(xlValue)
.MinimumScale = 0
.MaximumScale = 3.5
.MinorUnitIsAuto = True
.MajorUnitIsAuto = True
.CrossesAt = 1
End With
ActiveSheet.ChartObjects("Diagramm 1").Activate
k = ActiveChart.SeriesCollection.Count
n = 1
'Punkt a
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 11
.MarkerForegroundColorIndex = 11
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1
'Punkt b
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 7
.MarkerForegroundColorIndex = 7
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1
'Punkt c
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 6
.MarkerForegroundColorIndex = 6
.MarkerStyle = xlTriangle
.MarkerSize = Größe
End With
n = n + 1
'Punkt d
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 33
.MarkerForegroundColorIndex = 33
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1
'Punkt e
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = 30
.MarkerStyle = xlStar
.MarkerSize = Größe
End With
n = n + 1
'Punkt f
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 9
.MarkerForegroundColorIndex = 9
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1
'Punkt g
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = xlNone
.MarkerForegroundColorIndex = 23
.MarkerStyle = xlPlus
.MarkerSize = Größe
End With
n = n + 1
'Punkt h
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 1
.MarkerForegroundColorIndex = 1
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1
'Punkt i
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 42
.MarkerForegroundColorIndex = 42
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1
'Punkt j
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 46
.MarkerForegroundColorIndex = 46
.MarkerStyle = xlDiamond
.MarkerSize = Größe
End With
n = n + 1
'Punkt k
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 35
.MarkerForegroundColorIndex = 35
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1
'Punkt l
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 44
.MarkerForegroundColorIndex = 44
.MarkerStyle = xlTriangle
.MarkerSize = Größe
End With
n = n + 1
'Punkt m
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 41
.MarkerForegroundColorIndex = 41
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1
'Punkt n
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 53
.MarkerForegroundColorIndex = 53
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1
'Punkt o
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 39
.MarkerForegroundColorIndex = 39
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
n = n + 1
'Punkt p
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 40
.MarkerForegroundColorIndex = 40
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 1
'Punkt q
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 51
.MarkerForegroundColorIndex = 51
.MarkerStyle = xlSquare
.MarkerSize = Größe
End With
n = n + 2
'Punkt Durchschnitt
Größe = Application.WorksheetFunction. _
VLookup(n, Sheets("Benenne_mich").Range("A3:W21"), 23)
ActiveChart.SeriesCollection(n).Select
With Selection
.MarkerBackgroundColorIndex = 3
.MarkerForegroundColorIndex = 3
.MarkerStyle = xlCircle
.MarkerSize = Größe
End With
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartType = xlXYScatter
ActiveChart.ChartTitle.Delete
ActiveSheet.ChartObjects("Diagramm 1").Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes("Diagramm 1").IncrementLeft -231.75
ActiveSheet.Shapes("Diagramm 1").IncrementTop -143.25
ActiveSheet.Shapes("Diagramm 1").ScaleWidth 1.94, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Diagramm 1").ScaleHeight 1.96, msoFalse, _
msoScaleFromTopLeft
'dies zu Verlangsamung; sonst rafft der Rechner
'das nur im Einzelschritt :-)) ??
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Select
With Selection.Font
.Name = "Arial"
.Size = 12
End With
End Sub
Jean Ruch
2006-08-11 10:21:00 UTC
Permalink
Post by andreas schneider
Hallo Jean,
erstmal Danke für Dein Makro.
Folgendes Problem tritt bei mir noch auf (im Büro nutze ich Excel
Wenn ich das Makro laufen lasse, wird auf dem neuen Tabellenblatt
Benenne_mich ein Balkendiagramm angezeigt, statt eines
Punktediagramms. Außerdem bekomme ich die Fehlermeldung
"Laufzeitfehler 1004: Die MinimumScale Eigenschaft des Axis Objekts
kann nicht festgelegt werden"
Meiner Meinung nach wird aus diesem Grund das makro nicht
weiterausgeführt und nicht als Punktediagramm dargstellt.
Allerdings habe ich nichts gefunden, wie ich die Fehlermeldung
beseitigen kann.
Vielleicht kannst Du ja nocheinmal drüberschaun:)
Nochmals 1000 Dank.
andreas
Hallo Andreas,

Eigentlich schade.... Ich hab es bei mir ( Win XP / Office XP Pro
SP3 ) nochmal nach Wegschicken (und aus dem Posting herauskopiert)
ausprobiert und es funktionierte zuerst mit dem kleinen Fehler, dass
es diesmal zu einem ungwünschten Zeilenumbruch im Kommentar ganz am
Anfang kam
Ein Apostroph davor, und es lief einwandfrei.

Ich kann mir nur vorstellen, dass es mit der Voreinstellung deines
Standarddiagramms ( das Icon mit blauen Säulen und Hand mit gestrecktem
Finger) in Verbindung steht.
Bei mir ist dieses auf xy-Diagramme eingestellt. Ich vermute dass dann
XL automatisch (auch wenn es über VBA geschieht -besonders ohne
speziellen Hinweis-, diese Einstellung nimmt
Könnte es sein, dass es bei Dir auf Balkendiagramm eingestellt ist ?

Versuche mal dann an der Leer-Stelle zwischen den beiden folgenden
Befehlen ( etwas unterhalb der Stelle wo die xxxxxxxxxxx Streifen
stehen), d.h. kurz nach der Anweisung "Chart.Add"
Post by andreas schneider
Post by Jean Ruch
ActiveChart.Location _
Where:=xlLocationAsObject, Name:="Benenne_mich"
ActiveChart.PlotBy = xlColumns
ActiveChart.ChartType = xlXYScatter
Dass dürfte schon VBA gefügsam machen.
Ich schätze, wenn es daran liegen sollte, es auch schon alles ist, was
zu ändern ist

Du siehst schon, diesen Befehl habe ich aus dem Posting herauskopiert,
wohl ganz gegen Ende, wo ich das Diagramm nochmal kurz überarbeite,
aber bis dahin kommt es ja bei Dir gar nicht

Versuch zuerst m al diese Einstellung, ich denke, auch das kriegen wir
gebacken.....


mit freundlichem Gruß

Jean
andreas schneider
2006-08-11 11:41:25 UTC
Permalink
Hallo!

Klasse jetzt funktioniert es. :) Ich ändere jetzt nur noch im Makro
Hintergründe Rahmen etc. und dann passt es...

Echt klasse. Noch vielen Dank

andreas
Post by Jean Ruch
Post by andreas schneider
Hallo Jean,
erstmal Danke für Dein Makro.
Folgendes Problem tritt bei mir noch auf (im Büro nutze ich Excel
Wenn ich das Makro laufen lasse, wird auf dem neuen Tabellenblatt
Benenne_mich ein Balkendiagramm angezeigt, statt eines
Punktediagramms. Außerdem bekomme ich die Fehlermeldung
"Laufzeitfehler 1004: Die MinimumScale Eigenschaft des Axis Objekts
kann nicht festgelegt werden"
Meiner Meinung nach wird aus diesem Grund das makro nicht
weiterausgeführt und nicht als Punktediagramm dargstellt.
Allerdings habe ich nichts gefunden, wie ich die Fehlermeldung
beseitigen kann.
Vielleicht kannst Du ja nocheinmal drüberschaun:)
Nochmals 1000 Dank.
andreas
Hallo Andreas,
Eigentlich schade.... Ich hab es bei mir ( Win XP / Office XP Pro SP3
) nochmal nach Wegschicken (und aus dem Posting herauskopiert)
ausprobiert und es funktionierte zuerst mit dem kleinen Fehler, dass es
diesmal zu einem ungwünschten Zeilenumbruch im Kommentar ganz am Anfang
kam
Ein Apostroph davor, und es lief einwandfrei.
Ich kann mir nur vorstellen, dass es mit der Voreinstellung deines
Standarddiagramms ( das Icon mit blauen Säulen und Hand mit gestrecktem
Finger) in Verbindung steht.
Bei mir ist dieses auf xy-Diagramme eingestellt. Ich vermute dass dann
XL automatisch (auch wenn es über VBA geschieht -besonders ohne
speziellen Hinweis-, diese Einstellung nimmt
Könnte es sein, dass es bei Dir auf Balkendiagramm eingestellt ist ?
Versuche mal dann an der Leer-Stelle zwischen den beiden folgenden
Befehlen ( etwas unterhalb der Stelle wo die xxxxxxxxxxx Streifen
stehen), d.h. kurz nach der Anweisung "Chart.Add"
Post by andreas schneider
Post by Jean Ruch
ActiveChart.Location _
Where:=xlLocationAsObject, Name:="Benenne_mich"
ActiveChart.PlotBy = xlColumns
ActiveChart.ChartType = xlXYScatter
Dass dürfte schon VBA gefügsam machen.
Ich schätze, wenn es daran liegen sollte, es auch schon alles ist, was
zu ändern ist
Du siehst schon, diesen Befehl habe ich aus dem Posting herauskopiert,
wohl ganz gegen Ende, wo ich das Diagramm nochmal kurz überarbeite, aber
bis dahin kommt es ja bei Dir gar nicht
Versuch zuerst m al diese Einstellung, ich denke, auch das kriegen wir
gebacken.....
mit freundlichem Gruß
Jean
Jean Ruch
2006-08-11 17:16:05 UTC
Permalink
Post by andreas schneider
Hallo!
Klasse jetzt funktioniert es. :) Ich ändere jetzt nur noch im Makro
Hintergründe Rahmen etc. und dann passt es...
Echt klasse. Noch vielen Dank
andreas
Hallo Andreas,



Danke für die Rückmeldung. Es freut mich immer, wenn

ich helfen konnte und hoffe sogar, Deine anfängliche eher

gespaltene Haltung zu Makros etwas positiver gestimmt

zu haben ?? :-))



Wobei da noch mit meinem Angebot einiges

verbesserungsfähig wäre, angefangen mit

der Deklaration der Variablen,

eine Fehlerbehandlung (z.B. eine Meldung wenn Du (oder

sonst jemand) versuchen solltest, ein zweites mal ein Fenster

mit einem schon vorhandenem Namen zu öffnen ,

ein paar mehr Kommentare, usw....



Abschließend möchte ich Dir trotzdem noch Folgendes raten



Als erste Codezeile empfehle ich Dir einzugeben



Application.ScreenUpdating= False



Und am Ende, gerade vor: End Sub

diese Sperre wieder aufzuheben mit:



Application.ScreenUpdating= True



Dann wackelt nichts mehr, das Ganze ist schneller und Du

siehst höchstens während der Durchführung eine Sand-Uhr.



Ansonsten würde ich diesem Makro, wenn es jetzt mal

definitiv bzw. vorläufig-definitiv ist, (und ordentlich arbeitet)

einen Short-Cut zuweisen.

Wenn dies Dir fremd sein sollte und Du Hilfe bräuchtest,

kannst Du Dich ja melden. Ist total einfach.



schönes Wochen-Ende!



Mit freundlichem Gruß

Jean
Andreas Schneider
2006-08-12 14:29:44 UTC
Permalink
Danke für die Verbesserungsvorschläge, werde ich nach dem Urlaub mal
probieren:)

Shortcut bekomme ich hin..

Gruß

andreas
Post by Jean Ruch
Post by andreas schneider
Hallo!
Klasse jetzt funktioniert es. :) Ich ändere jetzt nur noch im Makro
Hintergründe Rahmen etc. und dann passt es...
Echt klasse. Noch vielen Dank
andreas
Hallo Andreas,
Danke für die Rückmeldung. Es freut mich immer, wenn
ich helfen konnte und hoffe sogar, Deine anfängliche eher
gespaltene Haltung zu Makros etwas positiver gestimmt
zu haben ?? :-))
Wobei da noch mit meinem Angebot einiges
verbesserungsfähig wäre, angefangen mit
der Deklaration der Variablen,
eine Fehlerbehandlung (z.B. eine Meldung wenn Du (oder
sonst jemand) versuchen solltest, ein zweites mal ein Fenster
mit einem schon vorhandenem Namen zu öffnen ,
ein paar mehr Kommentare, usw....
Abschließend möchte ich Dir trotzdem noch Folgendes raten
Als erste Codezeile empfehle ich Dir einzugeben
Application.ScreenUpdating= False
Und am Ende, gerade vor: End Sub
Application.ScreenUpdating= True
Dann wackelt nichts mehr, das Ganze ist schneller und Du
siehst höchstens während der Durchführung eine Sand-Uhr.
Ansonsten würde ich diesem Makro, wenn es jetzt mal
definitiv bzw. vorläufig-definitiv ist, (und ordentlich arbeitet)
einen Short-Cut zuweisen.
Wenn dies Dir fremd sein sollte und Du Hilfe bräuchtest,
kannst Du Dich ja melden. Ist total einfach.
schönes Wochen-Ende!
Mit freundlichem Gruß
Jean
Loading...