Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Gesamtcode so ausführen wie Einzelcodes(Diagrammsegmente einblenden)
#11
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?
________________________________________________________________________
wer aufgibt, ohne es versucht zu haben, gibt einfach nur auf!

Grüße aus Norderstedt, Peter
Antworten Top
#12
(16.11.2017, 18:10)schauan schrieb: dann versuch mal, den Diagrammnamen einzusetzen und nicht den Index Smile
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.
Antworten Top
#13
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:
  • o0Julia0o
Antworten Top
#14
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.
Antworten Top
#15
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:
  • o0Julia0o
Antworten Top
#16
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:
.xlsm   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.
Antworten Top
#17
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:
  • o0Julia0o
Antworten Top
#18
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.
Antworten Top
#19
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
Antworten Top
#20
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)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste