Registriert seit: 11.04.2014
Version(en): '97 bis 2016; 365
16.11.2017, 23:10
(Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2017, 23:10 von Käpt'n Blaubär.)
Hallo Ralf,
ja, bei ScreenUpdating ist es so, aber ich bin der Meinung, "wehret den Anfängen". Wenn man sich das "Fehler machen" erst mal angewöhnt hat und dann plötzlich in 30 Dateien auf Fehlersuche gehen muß, weil man einmal schlampig war, dann wird man in Zukunft wohl auch vorsichtiger beim Programmieren. Drum bin ich der Meinung, wenn man am Beginn des Codes etwas einschaltet oder etwas ausschaltet, dann gehört es zu einem guten Programmierstil, es vor Ende des Codes auch wieder rückgängig zu machen.
Beispielsweise habe ich auch mal gesagt, was scheeren mich die überflüssigen Selects und Activates. Ich bin froh, wenn es rund läuft. Dann habe ich in meinem bis dahin größten Projekt mal das ScreenUpdating auf True gesetzt, die Codes durchlaufen lassen und mir zurückgelehnt im Sessel den Spaß mal angeschaut. Nun, was soll ich sagen, ich habe Jahre gebraucht, meine Programme zu überarbeiten.
Die gleiche Menge Mehrarbeit habe ich auf mich nehmen müssen, weil ich ein für mich angenehmes Datumformat benutzte. Das war jahrelang mein Datumformat, beispielsweise gern genutzt auch in Kontenaufstellungen, Einnahmen-/ Ausgabenberechnungen usw. Begründung, ich muß ja mit dem Datum nicht rechnen. Was soll ich sagen, eines schönen Tages brauchte ich das Datum, um tagesgenaue Zinsen und Zinseszinsen über Jahre hinweg berechnen zu können. Böse Falle das.
Warum also soll ich die Fragesteller nicht vor "Anfängerfehlern" warnen, bevor sie sie gemacht haben?
Registriert seit: 08.07.2016
Version(en): 2016
17.11.2017, 01:18
(Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2017, 01:19 von o0Julia0o.)
(16.11.2017, 19:10)schauan schrieb: dann versuch mal, den Diagrammnamen einzusetzen und nicht den Index  So? Code: Sub DiagrammTextEin() Worksheets("Rech").Range("B3").FormulaLocal = "=" & "F2" Application.Charts("Diagramm 1").Refresh Application.Wait Now + TimeSerial(0, 0, 1) Worksheets("Rech").Range("B4").FormulaLocal = "=" & "F3" End Sub
Das Makro wird von dem Tabellenblatt aus gestartet, wo sich auch das Diagramm befindet. Der Fehler bleibt identisch: Laufzeitfehler 9 -> "Index außerhalb des gültigen Bereichs". Der Diagrammname ist richtig, wenn ich es per Aufzeichnung auswähle wird folgender Code erstellt: Code: Sub Makro5() ' ' Makro5 Makro '
' ActiveSheet.ChartObjects("Diagramm 1").Activate ActiveChart.PlotArea.Select End Sub
Ich habe auch mal: Code: ActiveSheet.ChartObjects("Diagramm 1").Refresh
probiert. ABer dann kommt: Laufzeitfehler 438: "Objekt unterstüzt diese Eigenschaft oder Methode nicht." So auch nicht: Code: ActiveSheet.ChartObjects("Diagramm 1").Activate ActiveChart.Refresh
Es kommt zwar kein Fehler, jedoch wird das Diagramm auch nicht aktualisiert.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
eigentlich aktualisiert sich ein Diagramm doch bei Änderung der Werte. Falls Du mit Deinem Code erst eine Formel änderst, die das Diagramm beeinflusst, und dann vielleicht wieder zurücksetzt, hast Du in der Regel auch den gleichen Stand wie vorher. Es Sei denn, Du hast z.B. die Berechnung ausgestellt.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
17.11.2017, 18:43
(Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2017, 18:44 von o0Julia0o.)
genau die Textbezeichnungen ändere ich ja hiermit: Code: Worksheets("Rech").Range("B3").FormulaLocal = "=" & "F2
Doch die Änderungen werden ja nicht aktualisiert im Diagramm, wie gesagt. Irgendwelche Zahlen gibt es in dem Diagramm nicht, die berechnet werden könnten. Ich hab´ schon alles mögliche probiert, aber das Diagramm aktualisiert sich erst mit den neuen Bezeichnungen, wenn das Makro gestoppt hat.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
was meinst Du mit "wenn das Makro gestoppt hat" ? Am Ende oder zwischendrin? Eventuell kannst Du mal ein Muster mit dem betreffenden Code hochladen?
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
19.11.2017, 22:31
(Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2017, 22:31 von o0Julia0o.)
jo, danke André. Mit "gestoppt" meine ich, wenn das Makro bis zum "End Sub" ausgeführt wurde. Ich habe die Rad.xlsm mal angehanben hier:
Rad.xlsm (Größe: 29,16 KB / Downloads: 5)
Also wenn man auf Namenlösch geklickt hat werden die Namen aus dem Diagramm entfernt. Wenn man auf Start klickt, werden sie nacheinander wieder hinzufgefügt(in die entsprechenden Zellen). Jedoch im Diagramm erst, wenn der Code zu Ende ausgeführt worden ist. Also nicht nach und nach erscheinen die Namen im Diagramm - doch genau das möchte ich.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
19.11.2017, 23:20
(Dieser Beitrag wurde zuletzt bearbeitet: 19.11.2017, 23:20 von schauan.)
Hallöchen, In Deiner Datei finde ich diesen Code: Code: Sub DiagrammTextEin() Worksheets("Rad").Range("B2").FormulaLocal = "=" & "P2" Sleep 400 Worksheets("Rad").Range("B3").FormulaLocal = "=" & "P3" Sleep 400 Worksheets("Rad").Range("B4").FormulaLocal = "=" & "P4" Sleep 400 Worksheets("Rad").Range("B5").FormulaLocal = "=" & "P2" Sleep 400 Worksheets("Rad").Range("B6").FormulaLocal = "=" & "P3" Sleep 400 Worksheets("Rad").Range("B7").FormulaLocal = "=" & "P4" End Sub
Der ist nicht drin Code: Sub DiagrammTextEin() Worksheets("Rech").Range("B3").FormulaLocal = "=" & "F2" Application.Charts("Diagramm 1").Refresh Application.Wait Now + TimeSerial(0, 0, 1) Worksheets("Rech").Range("B4").FormulaLocal = "=" & "F3" End Sub
Soll der den anderen ersetzen? Der andere macht ja was grundverschiedenes ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• o0Julia0o
Registriert seit: 08.07.2016
Version(en): 2016
20.11.2017, 00:04
(Dieser Beitrag wurde zuletzt bearbeitet: 20.11.2017, 00:05 von o0Julia0o.)
ja genau, das 2. war ja nur ein Test - der ja nix gebracht hatte. Und die Werte stehen nun auch an anderer Stelle. Ziel ist es, wenn die Namen hinzugefügt werden, dass sie auch im Diagramm hinzugefügt werden - also nach und nach. Und nicht erst, wenn der Code zu ende ist(End Sub) plötzlich alle Namen auf einen Schlag im Diagramm darzustellen.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
Hi
in deinem Thema "VBA - Wartezeit einbauen" hatte ich dir einen Tipp gegeben.
Ich habe jetzt mal in deinem Code alle Sleep durch Pause(0.5) ersetzt. Denke dann ist der Effekt so wie du es wolltest.
Gruß Elex
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
Dein Code läuft doch gar nicht durch, da kommt eine Fehlermeldung. Hast Du das Diagramm 1 gelöscht? In der Datei gibt es nur ein Diagramm 4. Soll das mit dem Makro verändert werden?
Ein Refresh funktioniert bei mir so: ActiveSheet.ChartObjects("Diagramm 4").Chart.Refresh
Allerdings, wie ich schon weiter oben anführte, was versprichst Du Dir davon? Wenn Du die Texte in den Bereich einfügst, der im Diagramm verdrahtet ist, dann kommen die auch ohne Refresh hinein.
Das Problem der fehlenden Namen - falls Du mit dem Code die Namen oder die Formeln einfügen willst - ist allerdings, dass da in B2:B7 nix steht. Ich weiß auch nicht, wozu Du die Formeln für die Namen in M10:M12 einträgst. B2:B7 ist das egal.
Du hast nur ein Makro zum Löschen - Sub Namenlösch()
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
|