Registriert seit: 03.02.2021
Version(en): 2010
Hallo!
Habe einen code bei vba eingefügt.
Private Sub Ausgabe_Click()
Dim iCnt%
iCnt = 6
Do While Cells(iCnt, 6) <> "" And iCnt <= 13
With Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = Date
.Offset(0, 1).Value = Time
.Offset(0, 2).Value = Cells(4, 6).Value
.Offset(0, 3).Value = Cells(5, 6).Value
.Offset(0, 4).Value = Cells(iCnt, 6).Value
End With
iCnt = iCnt + 1
Loop
End Sub
Er ist extreme langsam und füllt immer nur Zelle für Zelle aus. kann ich den code optimieren, um das zu beschleunigen?
gruß
Registriert seit: 11.04.2014
Version(en): Office 365
05.03.2022, 14:48
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2022, 14:49 von Klaus-Dieter.)
Hallo,
es wäre einfacher zu helfen, wenn du mal deine Datei hochladen würdest.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 13.04.2014
Version(en): 365
05.03.2022, 14:50
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2022, 14:52 von BoskoBiati.)
Hallo,
gelöscht.
Gruß
Edgar
Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Registriert seit: 12.06.2020
Version(en): 2024, 365business
schalte die automatische Berechnung für die Dauer der Programmausführung auf manuell.
evtl. das Screenupdating auch.
verlagere die Ermittlung der letzten Zeile auf außerhalb der do while schleife.
Registriert seit: 25.11.2021
Version(en): 2019, 365
05.03.2022, 16:13
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2022, 16:16 von Ralf A.)
Hi Martin,
Zitat:...und füllt immer nur Zelle für Zelle aus....
smile.... nun ja... das ist die Anweisung in Deiner Schleife....
2 Vorschläge zur Beschleunigung:
1.: Vor der Schleife Screenupdating und ggf. EnableEvents auf false, nach der Schleife wieder auf true setzen.
2.: Diese Vorschriften:
Code:
With Cells(Rows.Count, 1).End(xlUp).Offset(1)
.Value = Date
.Offset(0, 1).Value = Time
.Offset(0, 2).Value = Cells(4, 6).Value
.Offset(0, 3).Value = Cells(5, 6).Value
haben immer wieder den gleichen Wert. Was haben die dann in der Schleife verloren? Das kann man in einem Rutsch erledigen.
Der einzige Wert, der abhängig von der Zelladresse ist, ist der:
.Offset(0, 4).Value = Cells(iCnt, 6).ValueAber selbst dafür brauchst Du keine Schleife. Benutze am Besten eine formatierte Tabelle, definiere die Startadresse, fülle die jeweils erste Zeile mit den Werten Date, Time usw. (nur die letzte Spalte braucht eine Formel á la = F2 ). Passe die Größe der Tabelle neu an.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Ciao, Ralf
Registriert seit: 29.09.2015
Version(en): 2030,5
05.03.2022, 16:16
(Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2022, 16:17 von snb.)
Code:
Private Sub Ausgabe_Click()
sn=cells(4,6).resize(8,5)
for j=3 to ubound(sn)
sn(j,5)=sn(j,1)
sn(j,1)=date
sn(j,2)=time
sn(j,3)=sn(1,1)
sn(j,4)=sn(2,1)
next
cells(4,6).resize(8,5)=sn
End Sub
Avoid Do ... Loop is possible.