Clever-Excel-Forum

Normale Version: Performance Probleme bei Diagrammen mit Excel 2016
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo community,
 
ich habe auf meinem altersschwachen Desktop PC unter EXCEL 2013 ein "Glücksrad" gebastelt, das dort flüssig und rund läuft.
Auf meinem nagelneuen Microsoft Surface Pro (8GB , i5 Prozessor) läuft es unter EXCEL 2016 dagegen völlig unbefriedigend langsam und extrem ruckelnd. Genau auf diesem Gerät möchte ich es aber einsetzen.
Für Ideen, wie ich dieses Problem evtl. umgehen kann, wäre ich sehr dankbar!
 
Anbei der VBA code:
(Voraussetzung ist, dass ein Kreisdiagramm eingefügt wurde)
 
Code:
Function Winkel(ByVal start, max, x As Single) As Single
 Winkel = (start + max * (1 - Exp(-max / 1800 * x)) / (1 + Exp(-2 * x + 5))) Mod 360
End Function

Sub Glücksrad()

Dim t As Long
Dim start, PauseTime, Z As Single

Application.ScreenUpdating = True
PauseTime = 0.1
t = 0
ActiveSheet.ChartObjects("Diagramm 1").Activate

Z = 720 * Rnd + 360

For t = 0 To 600

 ActiveChart.ChartGroups(1).FirstSliceAngle = Winkel(0, Z, t / 40)
 
 start = Timer
 Do While Timer < start + PauseTime
    DoEvents
  Loop

Next


End Sub
Hey,

ich kann dir leider nicht sagen warum sich bei deinem Code das Rad auf meinem Pc und deinem Microsoft Surface Pro nicht richtig dreht.

Ich habe aber auch mal so eine kleine Spielerei gebastelt.
Teste es aus. Bei mir läuft der Code und evtl. läuft es auch auf dem Microsoft Surface Pro.

[attachment=13132]
Hallo Elex,

tausend Dank für deine Version, die auf dem Surface tadellos läuft!!! Angel
Nach langen Vergleichen und Angleichen des VBA codes zwischen deiner laufenden und meiner streikenden Version habe ich schließlich herausgefunden, dass der Hund nicht im Code begraben liegt, sondern in der Wahl der Formatvorlage für das Kreisdiagramm.
Es macht zumindest in EXCEL 2016 einen großen Unterschied, ob die Legende farbig oder monochrom ist.
Wenn ich sie bei mir auch auf monochrom umstelle, läuft es besser.
Komisch ist nur, dass ich dein Diagramm nicht ordentlich umformatieren kann (um es testweise auch auf "langsam" zu trimmen):
 Entwurf --> Farben ändern führt bei deinem Diagramm zu komischen monochromen Einfärbungen aller Sektoren.
Ich vermute, du hast dein Diagramm in EXCEL 2013 erstellt und die Formatierungsmöglichkeiten zwischen EXCEL 2016 und 2013 sind nicht kompatibel.
Hey,

von fast stehen bis schnell ist eigentlich alles machbar.

in K7 eine 1 und im Code bei Pause (0.5) oder noch langsamer.

z.B. kannst du im Code auch Cells(7, 11) durch einer Variable ersetzen welche du dann im Laufe von schnell nach langsam veränderst. (also von 36, 30, 24, 18.....)

Und die Pausenzeit auch durch eine Variable verändern.

Mfg
Hi,
ich habe es runtergeladen und ohne Veränderung benutzt.
Um zu sehen, welcher Wert ausgewählt wird, habe ich I13 als Trenner farblich markiert.
Egal, wie das Rad steht, spätestens ab dem 2. mal Drehen kommt immer derselbe Wert.
Hi,

es handelte sich damals nur um das Grundgerüst eines Glücksrades, um festzustellen ob die Drehbewegung ruckelfrei auf dem Surface  läuft. Weitere Gestalltung war frei.

Hier mal eine fertigere Version:

[attachment=13547]
Hi,
das gefällt mir sehr gut.

Wenn ich während des Laufes irgendwo in dem Blatt klicke, kommt ein Fehler:
"Laufzeitfehler '91':
Objektvariable oder With-Blockvariable nicht festgelegt"
in dieser Zeile
ActiveChart.ChartGroups(1).FirstSliceAngle = n
Hi Ralf,

Danke für den Hinweis.
Ist mir noch garnicht aufgefallen, weil ich bisher noch nie während des Drehen eine andere Aktion durchgeführt habe.
Klar wenn man eine Zelle anklickt ist das Diagramm nicht mehr Aktiv. Muß ich mir noch was überlegen.

Mfg Elex
ja, das kommt ebenfalls, wenn man ein anderes Fenster als das Excel-Fenster anwählt. Gibt es nicht irgendwie so etwas wie on error mache gar nix. Meine da gab es mal irgendso etwas in der Art jedenfalls. Also Fehlerüberprüfung ausstellen - Code ausführen -> Fehlerüberprüfung anstellen.

Aber super nice das Teil!
Hi

der Fehler ist beseitigt.

Im Code einfach die Zeile
ActiveSheet.ChartObjects("Diagramm 4").Activate

direkt vor diese verschieben.
ActiveChart.ChartGroups(1).FirstSliceAngle = n
Seiten: 1 2