Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Makro auszuführen dauert sehr lange


Betrifft: Makro auszuführen dauert sehr lange von: Nicolai
Geschrieben am: 19.08.2016 12:22:05

Hallo zusammen,

ich hatte hier aus dem Forum folgenden Code bekommen:

Z1 = TimeValue(TextBox1.Text) / TimeValue("00:15") + 1
Z2 = TimeValue(TextBox2.Text) / TimeValue("00:15") + 1

For Z = Z1 To Z2
Cells(Z, 2).Value = Cells(Z, 2).Value + 1
Next


https://www.herber.de/forum/archiv/1508to1512/t1508005.htm

Der funktioniert auch super, allerdings wenn ich eine große Zeitspanne eingebe 14:00-20:00 dauert das ausführen des Codes sehr lange.

Hat jemand von euch ein Lösungsvorschlag welchen den Prozess verbessern würde?

Vielen Dank & Grüße,

Nicolai

  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Werner
Geschrieben am: 19.08.2016 12:35:11

Hallo Nicolai,

versuch mal am Anfang des Makros mit

Application.ScreenUpdating = False 'Bildschirmaktualisierung ausschalten
Application.Calculation = xlCalculationManual 'automat.Berechnung ausschalten

und am Ende mit

Application.Calculation = xlCalculationAutomatic 'automat.Berechnung einschalten
Application.ScreenUpdating = True 'Bildschirmaktualisierung einschalten

die Bildschirmaktualisierung und die automatische Berechnung aus und wieder einzuschalten.

Gruß Werner


  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Nicolai
Geschrieben am: 19.08.2016 13:15:52

Hallo Werner,

vielen dank, ScreenUpdating hatte ich sogar mit drin.

Den zweiten hatten ich nicht drin, nun habe ich ihn eingebaut und es funktioniert sehr viel schneller.
Was genau wird damit auf manuell geschaltet, also was ist da der Unterscheid zwischen manuell und autom., das würde mich interessieren.

Vielen Dank & Grüße,

Nicolai


  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Werner
Geschrieben am: 19.08.2016 13:23:18

Hallo Nicolai,

da wird die automatische Berechnung der Formeln im Tabellenblatt ausgeschaltet. Es kann sein, dass du Formeln auf dem Blatt hast, die bei jeder Änderung im Blatt alle neu berechnet werden und das kann dann halt dauern.

Aber hast du dir den Vorschlag von Daniel mal angeschaut?

Gruß Werner


  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Nicolai
Geschrieben am: 19.08.2016 15:59:18

Ich hab beides mal getestet.
Sind beide super, ich werde auch nochmal testen, beide Versionen gleichzeitig zu benutzen.

Vielen Vielen Dank euch beiden.

Viele Grüße,

Nicolai


  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Daniel
Geschrieben am: 19.08.2016 16:28:22

Hi
wenn du beim Programmieren die Eigenarten von Excelberücksichtigst und die passenden Excelwerkzeuge auch in VBA verwendest, bringt das Ausschalten der Bildschirmaktualisierung und der Automatischen Neuberechnung nur in wenigen Fällen noch eine signifikante Verbesserung der Ausführungszeit.
Gruß Daniel


  

Betrifft: AW: Gerne u. Danke für die Rückmeldung. o.w.T von: Werner
Geschrieben am: 19.08.2016 16:31:22




  

Betrifft: AW: Makro auszuführen dauert sehr lange von: Daniel
Geschrieben am: 19.08.2016 13:04:28

Hi
sehr schnell geht das so:

1. schreibe in eine freie Zelle (Excel hat genügend davon) den Wert 1
2. kopiere diese Zelle
3. füge das kopierte als Wert in die betroffenen Zellen ein, mit dem Vorgang Addieren

sieht als Makrocode dann so aus:

Cells(1, 1).Value = 1
Cells(1, 1).Copy

Range(Cells(Z1, 2), Cells(Z2, 2)).PasteSpecial xlpastevalues, Operation:=xladd
Cells(1, 1).ClearContents
du kannst hier im Prinzip jede leere Zelle verwenden, sie darf nur nicht innerhalb des Zellbereichs liegen, zu dem der Wert hinzuaddiert werden soll.

Gruß Daniel