Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Makro funktioniert nur beim 2 ausführen

VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 10:05:23
Dennis
Hallo,
Mein Makro funktioniert nun nach langer Zeit fast einwandfrei.
Jedoch erst wenn ich das Makro zweimal hintereinander ausführe.
Beim ersten versuch Funktionieren alle Rechnungen bis auf 1.
Bei dieser Rechnung in Spalte "K" kommt dann " #DIV/0! "
Die Formel Dafür ist

=WENN(G5= "";"";(((J5-I5)*100)/J5))

Nahe liegend ist das J5 null ist. Jedoch ist dies eigentlich nicht der Fall.
J5 wird durch diese Formel berechnet und gibt den richtigen Wert beim ersten Ausführen zurück.
=WENN(G5= "";"";SUMMEWENN(E:I;E5;I:I)/ZÄHLENWENN(E:I;E5))

Dabei sind die Werte in Spalte E & I konstanten die nicht berechnet wurden.
Ich habe auch überlegt ob es an meinen Initial Settings liegt. Diese hab ich jedoch aus dem Internet kopiert und weiß nicht ob das die Ursache sein kann.
screenUpdateState = Application.ScreenUpdating
statusBarState = Application.DisplayStatusBar
'calcState = Application.Calculation
eventsState = Application.EnableEvents
displayPageBreakState = ActiveSheet.DisplayPageBreaks
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
'Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Dabei habe ich die die für Rechnungen rauskommentiert da ich dort den Fehler vermutete, jedoch ohne Wirkung.
Ich hoffe jemand kann mir weiterhelfen.
Das ist mein erstes etwas größeres Makro und daher hab ich nur Grundkenntnisse von kleineren.
Mit freundlichen Grüßen
Dennis
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 12:58:48
Rudi
Hallo,
SUMMEWENN(E:I;E5;I:I) ist doch Quatsch. Dabei wird nur E auf E5 geprüft.
Gruß
Rudi
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 13:05:14
Dennis
Ja natürlich.
In den darunter stehenden Reihen ist natürlich E6;E7 und soweiter.
Sinnmäßig funktionieren die Formeln schon so wie sie sollen.
Nur halt beim Zweiten Ausführen erst.
Dazu zu sagen ist eventuell noch;
Wenn ich mein Programm 1 mal ausgeführt habe und in die Zellen gehe wo "#DIV/0!" gehe und die Formel da drin bestätige, das es dann den Richtigen Wert ausgibt.
Grüße
Dennis
Muss ich da irgendwelche zusätzlichen Sachen aktivieren oder deaktivieren damit es das gleich macht.
Anzeige
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 13:05:15
Dennis
Ja natürlich.
In den darunter stehenden Reihen ist natürlich E6;E7 und soweiter.
Sinnmäßig funktionieren die Formeln schon so wie sie sollen.
Nur halt beim Zweiten Ausführen erst.
Dazu zu sagen ist eventuell noch;
Wenn ich mein Programm 1 mal ausgeführt habe und in die Zellen gehe wo "#DIV/0!" gehe und die Formel da drin bestätige, das es dann den Richtigen Wert ausgibt.
Grüße
Dennis
Muss ich da irgendwelche zusätzlichen Sachen aktivieren oder deaktivieren damit es das gleich macht.
Anzeige
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 13:08:17
Rudi
Hallo,
und die Formel da drin bestätige
Dann ist dein Code falsch. Das muss so funktionieren.
Gruß
Rudi
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 13:26:07
Dennis
Hallo,
Mein Code ist folgender:

With Sheets("hiddenTbl2")
.Range("I5:I10000").FormulaR1C1 = "=IF(RC[-2]= """","""",RC[-2]/RC[-3])"
.Range("J5:J10000").FormulaR1C1 = "=IF(RC[-3]= """","""",SUMIF(C[-5]:C[-1],RC[-5],C[-1]) _
/COUNTIF(C[-5]:C[-1],RC[-5]))"
.Range("K5:K10000").FormulaR1C1 = "=IF(RC[-4]= """","""",(((RC[-1]-RC[-2])*100)/RC[-1])) _
End With
Der Code wird jedenfalls nicht als "errormeldung" gemeldet.
Mit freundlichen Grüßen
Dennis
Anzeige
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 13:47:42
Rudi
evtl. hilft
With Sheets("hiddenTbl2")
.Range("I5:K10000").NumberFormat = "General"
.Range("I5:I10000").FormulaR1C1 = "=IF(RC[-2]= """","""",RC[-2]/RC[-3])"
.Range("J5:J10000").FormulaR1C1 = "=IF(RC[-3]= """","""",SUMIF(C[-5]:C[-1],RC[-5],C[-1])/ _
COUNTIF(C[-5]:C[-1],RC[-5]))"
.Range("K5:K10000").FormulaR1C1 = "=IF(RC[-4]= """","""",(((RC[-1]-RC[-2])*100)/RC[-1]))"
End With

Anzeige
AW: VBA Makro funktioniert nur beim 2 ausführen
24.07.2018 14:05:34
Dennis
Tausend Dank.
Eigentlich so einfach aber manchmal sieht man wohl den Baum vor lauter Wald nicht.
Es hat jetzt funktioniert.
ergebensten Dank
Dennis Mattutat
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA Makro: Lösungen für das Problem mit "#DIV/0!" und Zweitausführung


Schritt-für-Schritt-Anleitung

Wenn dein VBA Makro nicht beim ersten Ausführen funktioniert und du stattdessen beim zweiten Mal den gewünschten Wert erhältst, gehe wie folgt vor:

  1. Überprüfe die Formeln: Stelle sicher, dass die Berechnungen in den Zellen korrekt sind. In deinem Fall könnte die Formel in Spalte K, die #DIV/0! zurückgibt, ein Problem darstellen. Achte darauf, dass J5 nicht null ist.

    Die Formel könnte so aussehen:

    =WENN(G5= "";"";(((J5-I5)*100)/J5))
  2. Formeln in den Zellen bestätigen: Manchmal hilft es, die Formeln in den Zellen manuell zu bestätigen, wie Dennis festgestellt hat. Dies kann dazu führen, dass Excel die Berechnungen aktualisiert.

  3. Formate setzen: Setze das Zahlenformat für die betroffenen Bereiche:

    With Sheets("hiddenTbl2")
       .Range("I5:K10000").NumberFormat = "General"
    End With
  4. Makro anpassen: Überprüfe, ob dein Makro korrekt initialisiert wird. Achte darauf, dass du die Berechnungen nicht manuell ausschaltest, wenn dies nicht notwendig ist.


Häufige Fehler und Lösungen

  • Fehler: #DIV/0! bei der ersten Ausführung
    Lösung: Überprüfe die Quelle der Berechnung in J5. Wenn diese Formel nicht den erwarteten Wert liefert, kann die Berechnung nicht durchgeführt werden.

  • Fehler: Werte werden nicht aktualisiert
    Lösung: Stelle sicher, dass du die Bildschirmaktualisierung und andere Einstellungen korrekt verwaltest. Deaktiviere Application.EnableEvents nur, wenn es nötig ist.


Alternative Methoden

Wenn du weiterhin Probleme hast, kannst du alternative Methoden in Betracht ziehen:

  • Verwendung von Excel-Funktionen: Anstatt VBA zu verwenden, kannst du die Formeln direkt in die Zellen einfügen und auf die Ergebnisse warten, bevor du das Makro ausführst.

  • Ereignisgesteuerte Prozeduren: Du könntest das Makro so anpassen, dass es bei bestimmten Ereignissen (z.B. beim Ändern von Zellen) automatisch ausgeführt wird.


Praktische Beispiele

Hier ist ein einfaches Beispiel, um den Fehler zu vermeiden:

With Sheets("hiddenTbl2")
    .Range("I5:I10000").FormulaR1C1 = "=IF(RC[-2]= """","""",RC[-2]/RC[-3])"
    .Range("J5:J10000").FormulaR1C1 = "=IF(RC[-3]= """","""",SUMIF(C[-5]:C[-1],RC[-5],C[-1])/COUNTIF(C[-5]:C[-1],RC[-5]))"
    .Range("K5:K10000").FormulaR1C1 = "=IF(RC[-4]= """","""",(((RC[-1]-RC[-2])*100)/RC[-1]))"
    .Range("I5:K10000").NumberFormat = "General" ' Setze das Zahlenformat
End With

Dieses Beispiel zeigt, wie man den Code optimieren kann, um sicherzustellen, dass die Berechnungen korrekt durchgeführt werden.


Tipps für Profis

  • Debugging: Verwende die Debugging-Funktionen in VBA, um herauszufinden, wo das Problem liegt. Setze Breakpoints und beobachte die Werte in Echtzeit.

  • Dokumentation: Halte deine Makros gut dokumentiert. Kommentiere jeden Schritt, um später leichter Fehler finden zu können.

  • Testen: Teste dein Makro in einer sicheren Umgebung, bevor du es in wichtigen Dokumenten verwendest.


FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nur beim zweiten Ausführen?
Das Problem könnte daran liegen, dass Excel die Berechnungen nicht sofort aktualisiert. Überprüfe die Formeln und stelle sicher, dass alle Zellen die richtigen Werte zurückgeben.

2. Wie kann ich das #DIV/0!-Problem in Excel vermeiden?
Verwende die WENN-Funktion, um sicherzustellen, dass du nicht durch null teilst. Achte darauf, dass alle abhängigen Zellen die erwarteten Werte haben, bevor du Berechnungen durchführst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige